Unity 에 Android Studio 처럼 모바일 에뮬레이터 기능이 추가되었다. 다만, 유니티는 에뮬레이터라고 하지 않고 Device Simulator 라고 하는 것 같다. 입력 관련 코딩을 하다가 Unity Play mode 에서는 잘 되는데 실제 모바일 기기에서만 발생하는 버그가 생겼는데 매번 빌드하기에는 시간이 오래 걸려서 이 Device Simulator 를 사용해보기로 했는데 수정해도 반영이 안되는 것 같아서 작은 착각(?)이 있었다.
이전 코드에서는 아래처럼 전처리기를 사용해서 컴파일 단계에서 분기되게 코딩했었는데 Unity Device Simulator 도 UNITY_EDITOR 로 인식된다. 컴파일 단계에서는 에디터에서 돌기 때문에 Device Simulator 를 돌려도 결국엔 에디터로 컴파일된 걸 실행. 따라서, #else 구문에 Device Simulator 에서 돌거라고 생각하고 넣은 것들은 허공에다가 발길질 한 것 과 같았다.
#if UNITY_EDITOR
// Editor 에서만 도는 코드
#else
// Editor 아닌 다른 기기에서 도는 코드
#endif
Device Simulator 로 실제 모바일 기기 관련 코드를 실행해보고자 한다면 전처리 구문이 아니라 Application.platform 을 활용해야 한다.
ex) if ( Application.platform == RuntimePlatform.Android ) { // 런타임 시 Android 라면
else if ( Application.platform == RuntimePlatform.IPhonePlayer ) { // 런타임 시 iphone 이라면...
런타임에서 호출하므로 Unity Device Simulator 에서 설정한 모바일 기기 모델에 따라서 제대로 분기되는 걸 확인할 수 있다. 다만, Application.platform 은 런타임에서 호출될 때마다 자원을 소비하니 전처리로 확실히 분기할 수 있다면 #ifdef 전처리로 플랫폼에 따라 구분 코딩하는 게 좀 더 효율적이기는 하다.
'GAME > 개발' 카테고리의 다른 글
첫 자작 게임 런칭 - 스카이콩콩 (SkyKongKong) (0) | 2022.02.12 |
---|---|
Unity - Google admob banner 연동 (1) | 2021.11.07 |
유니티에서 SHA-1 Key 생성 방법 (1) | 2021.11.05 |
unity - git 연동 에러 : because the tip of your current branch is behind... (0) | 2021.11.05 |
Unity - Git 연동 에러 : Temp/UnityLockfile (0) | 2021.11.05 |
댓글