자마린을 개발할 때 UI를 미리 보는 창이 있는데 미리 보기 창이 기본으로 열려있지를 않네요. 메뉴는 어디간거늬! 이게뭐라고 꼭꼭숨겨둔건지 ㅜㅡ 1. 메뉴 찾기 보기 > 다른 창 > Xamarin.Forms Previewer 를 선택합니다. 그러면 아래처럼 프리뷰 화면이 뜹니다. 2. 연결이 안된다? 원래는 이 상태로 빌드하면 화면이 나와야 합니다. 그런데 연결이 안 되고 다음과 같은 메시지가 뜬다면? (메시지는 상황에 따라서 다를 수 있습니다.) 일단 참조 > NuGet 패키지 관리를 열어 "Xamarin.Forms"를 업데이트해줍니다. (여러 개의 프로젝트가 있으면 해당 프로젝트마다 업데이트해줘야 합니다.) 그다음 1) 솔루션을 정리합니다. 2) 솔루션 다시 빌드를 눌러 빌드를 합니다. 짠잔 절대 안..
유니티UI에서 UI를 만들고 인스팩터(Inspector)을 확인해보면 랙트 트랜스폼(Rect Transform)이 추가된 것을 알 수 있습니다.랙트 트랜스폼에는 앵커 프리셋(Anchor Presets)이라는 것이 있습니다.(참고 : 유니티 매뉴얼 - 기본적인 레이아웃 ) UI가 유동적으로 배치되야 할 때(여러 해상도에 대응한다든가 하는 상황) 어떻게 배치돼야 하는지를 설정하는 값입니다.이 포스팅에서는 앵커 프리셋을 어떻게 다루고 사용하는지 알아보겠습니다. 1. 앵커를 찾아라! UI 패널(GameObject > UI > Panel)을 하나 생성합니다.생성된 패널의 인스팩터를 확인하면 랙트 트랜스폼이 있습니다.랙트 트랜스폼의 첫줄 왼쪽에 상자가 있습니다.이것이 앵커 프리셋입니다. 씬(Scene)화면에서는..
유니티에서 클릭했을 때 맨 위에 있는 오브젝트를 찾는 대표적인 방법이 레이캐스트(Raycast)를 이용한 방법입니다.그런데 2D 스프라이트(Sprite) 오즈젝트(object)를 사용하면 레이캐스트가 맞질 않습니다. 스프라이트의 기본 설정에 충돌체(Collider)가 없기 때문입니다. 1. 증상 확인하기 2D프로젝트를 생성하고 '2D Object > Sprite'와 '3D Object > Plane2'를 추가하고 두 오브젝트를 어느 정도 겹쳐 둡니다.상태를 확인할 텍스트오브젝트도 하나 올려줍니다. 스크립트를 생성하고 아래 코드를 넣습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ..
전에 4.x버전용 드래그를 구현한 적이 있습니다. (참고 : [Unity 4] 오브젝트 드래그 하기 ) 그런데 5.x용 자료를 보다 보니 드래그 관련 이벤트가 있군요. 언제 생긴 건지 모르겠지만 이것을 이용하면 오브젝트 드래그를 쉽게 구현할 수 있습니다. 1. 드래그 이벤트 'MonoBehaviour.OnMouseDrag()'이라는 이벤트가 생겼습니다. (참고 : unity documentation - MonoBehaviour.OnMouseDrag() ) 오브젝트에 'MonoBehaviour'가 붙어 있다면 그냥 이벤트만 오버라이드해서 사용하면 됩니다. 이 이벤트를 오버라이드한 스크립트를 가지고 있는 오즈젝트는 드래그가 시작되면 이벤트가 넘어옵니다. 프로젝트를 생성하고 '3D Text'객체와 'Cube'..
*Unity 5.3에서 확인 했습니다. 몇버전 부터인지는 모르겠는데 스크립트에서 씬을 이동하는 방법이 바꿨네요. (참고 : Unity Community - Unity 5.3 How to load current level ) //기존 코드 //Application.LoadLevel("SceneName"); //유징 필요 using UnityEngine.SceneManagement; SceneManager.LoadScene("SceneName"); 코드를 실행하기 전에 File > Build 로 들어가서 씬을 추가해 줘야 합니다. 이건 테스트용 프로젝트
유니티에서 만든 프로젝트를 Html5로 빌드하면 'WebGL'로 빌드 결과물이 나옵니다. 이렇게 나온 파일을 웹서버에 올리고 접속해보면.... Uncaught could not load memory initializer Release/[파일명].html.mem 아 잰장할 ㅎㅎㅎ 1. 원인 얼핏 보면 메모리 에러 같지만 이건 메모리 에러는 아니고 메모리로 사용되는 파일을 받을 수 없어서 발생하는 에러입니다. (흠....엄밀이 따지면 메모리 에러 맞네요 ㅎㅎㅎ) 빌드 결과물을 보면 'Release'폴더에 '*.data'와 '*.mem'파일이 있습니다. 그런데 웹서버는 보안상 이유로 허용된 파일확장자가 아니면 다운로드가 되지 않습니다. 저 두개는 웹서버에서 허용된 확장자가 아니므로 이런 에러가 발생하는 것입니..
3D에서 오브젝트를 움직일 때는 글로벌 축(Global Axis, 월드 축(Word Axis))이나 로컬 축(Local Axis)을 기준으로 움직이게 됩니다. 1. 글로벌 축(Global Axis, 월드 축(Word Axis)) 글로벌 축은 항상 고정된 축입니다. 유니티의 스크린에서 오른쪽 위에 표시되는 방향이 글로벌 축과 같은 방향입니다. 글로벌 축을 기준으로 움직이면 오브젝트의 축과 관계없이 글로벌 축의 방향으로만 움직이게 됩니다. 글로벌 축으로 움직이는건 쉽습니다. 그냥 트랜스폼(transform)의 포지션(Position, 혹은 로케이션(Rotation))만 병경하면 됩니다. //z축으로 이동 transform.position = transform.position + new Vector3(0, 0..
1. 증상 가끔 실행하면 진행이 되지 않고 빌드나 디바이스에 파일 보내는 단계 같은 곳에서 무한으로 대기하는 경우가 있습니다. 2. 조치 사항 1) 이럴 때는 비주얼 스튜디오(혹은 자마린 스튜디오(Xamarin Studio))를 재시작해봅시다. 2) 그래도 안 되면 관리자 권한으로 IDE를 열어보고 테스트해봅니다. 3) 그래도 안 되면 다른 디바이스를 사용해 봅니다. 에뮬레이터 사용 시에는 에뮬을 새로 생성하거나 다른 에뮬레이터를 사용해 봅니다. 보통은 위에 3가지 중 하나만 하면 해결됩니다. 마무리 안드로이드는 에뮬레이터가 많아서 다른 걸 선택하는것도 방법입니다 ㅎㅎㅎ
비주얼 스튜디오 2015가 나와서 날름 커뮤니티버전을 설치하고 안드로이드 프로젝트를 만들고 테스트를 돌렸는데...... Build Failed: MonoDroid does not support running the previous version. Please ensure your solution builds before running or debugging it. 으잌? ㅋㅋㅋㅋㅋ 1. 문제 원인 이 문제는 안드로이드 디바이스가 연결되지 않았을 때 흔히 볼 수 있는 에러입니다. 2. 해결 방법 테스트용 안드로이드 폰을 연결하거나 에뮬레이터를 미리 켜두시면 됩니다. 전 지니모션을 사용 중이라 지니모션을 켰습니다. 이제 실행됩니다. 3. 이외의 경우 디바이스가 연결되어 있는데도 이 에러가 발생하는 경우가 있..
C#의 구조가 자바랑 비슷해서 그런 것인지 자마린 컨샙이 안드로이드가 베이스인지는 모르겠습니다. 이게 IOS에서도 그대로 적용되는 것인지 모르겠네요. 어찌 됐건 자마린을 이용하여 안드로이드의 센서값을 가지고 오는 것은 안드로이드 어플리케이션과 비슷합니다. (참고 : Xamarin Recipes - Get Accelerometer Readings) 1. 센서값 받아오기 테스트 안드로이드와 같은 방법으로 가지고 올 수 있습니다. 먼저 메인 엑티비티에 'ISensorEventListener'인터페이스를 추가합니다. public class MainActivity : Activity, ISensorEventListener 이제 클래스 안에 센서 매니저를 선언하고 'OnCreate'안에서 초기화해줍니다. /// /..