출처 : 구글 이미지 검색

안녕하세요 철사마 입니다. 

구글 플레이 마켓에 앱을 서비스 하시는 분들은 대부분 아시겠지만 구글 플레이 마켓에 서비스를 하려면 2019년 8월 1일부터 64비트 아키텍쳐를 적용하여 앱에 출시하여야 합니다.

 

"2019년 8월 1일부터 Google Play에 게시된 앱에서는 64비트 아키텍처를 지원해야 합니다. 64비트 CPU는 사용자에게 더 빠르고 풍부한 환경을 제공합니다. 앱의 64비트 버전을 추가하면 성능이 향상되고 향후 혁신이 가능해지며 64비트 전용 하드웨어가 장착된 기기를 설정할 수 있습니다." - 구글 플레이 개발자 가이드 中

 

64비트를 적용하기 위해 유니티에서 64비트 버전을 지원하려면 ARM64를 사용해야하고 그러기 위해서는 IL2CPP를 사용해서 빌드를 해야 합니다. 

 

유니티에서 간단하게 설졍할 수 있는 방법을 스크린샷과 함께 설명해 드리겠습니다.

 

[File] > [Build Settings...] 으로 빌드 셋팅을 확인합니다.

 

물론 빌드 세팅이 Android 상태여야 합니다.

그리고 [Player Settings...] 버튼을 클릭하여 사용사 설정을 변경합니다.

 

[Player Settings...]를 누르면 [Project Settings] > [Player] 메뉴로 위치한 팝업이 생성됩니다.

여기메뉴에서 [Order Settings]를 골라서 정보의 리스트 중 하단으로 내려주세요.

 

하단으로 스크롤을 내리다보면 

Configuration이라는 항목이 존재합니다.

여기의 Scripting Backend가 기본적으로 Mono로 되어 있을 것입니다.

그리고 하단의 Target Architectures가 ARMv7로 되어 있을 것입니다.

이 부분을 아래와 같이 수정해 주시면 됩니다.

Scripting Backend를 Mono > IL2CPP 로 변경해 주시고

(IL2CPP 를 선택하면 아래 Target Architectures 에 ARM64가 활성화 됩니다.)

Target Architectures에서 ARM64 항목을 추가로 체크를 해주세요.

스샷에 나온 상태대로 IL2CPP와 ARM64를 선택하고 빌드를 하면 64비트를 지원하게 됩니다.

 

 

혹시 IL2CPP 빌드를 하려는데 SDK, JDK, NDK 관련 오류가 발생한다면 
Preferences -> External Tools 에서 정상적으로 설치가 되어 있는지 확인합니다. 

만약 위 스샷과는 다르게 경고 표시가 있다면 유니티 허브를 이용해서 
Android SDK & NDK Tools를 설치합니다. 
(보통 구버전 유니티를 사용하면서 mono로만 빌드를 했다면 NDK가 없을 수 있습니다. )

 

간단하게 셋팅을 하고 나면 이제부터 Android apk를 빌드할 때 기본적으로 64비트 아키텍쳐가 적용된 상태로 빌드가 가능합니다.

 

참고로 전 Unity 2019 버전이라 과거 버전에서는 설정 방법이 다를 수 있습니다.

참고해 주세요!

 

안녕하세요 철사마입니다.

오랜만에 유니티 팁을 기억해 놓으려고~ 개발 포스팅을 하게 되었습니다. :)

(이미지 출처 : 구글 이미지 검색)


따지고 보면 별건 아닌데, 모를 때는 방법을 몰라 매우 궁금했던 것인데요.

바로 화면 해상도 고정 방법입니다.


예를 들어 유니티에서 화면에 보이는 모습과 핸드폰에 보이는 모습이 다를 경우가 있습니다.

특히 2D의 경우는 더 심한데 개발시 화면에 보이는 것과 핸드폰이 동일해야 개발할 때 예측이 잘 될거라서 실제 화면과 다르다면 개발할 때 참 불편할 것입니다.


분명 방법이 있을 것 같아서 여기저기 찾아보니 이런 쉬운 방법이 있더군요!


바로 SetResolution 이라는 함수를 쓰면 쉽게 할 수 있습니다. 두둥~


Screen.SetResolution


public static void SetResolution(int width, int height, bool fullscreen, int preferredRefreshRate = 0);


화면의 해상도를 전환합니다.


A width by height resolution will be used. If no matching resolution is supported, the closest one will be used.


If preferredRefreshRate is 0 (default) Unity will switch to the highest refresh rate supported by the monitor.

/preferredRefreshRate/가 0이아니면 유니티는 모니터가 지원한다면 사용하고, 아니면, 지원되는 highest중 하나를 선택할 것입니다.


웹 플레이어상에서는 사용자가 컨텐츠를 클릭한 후에 해상도가 변경됩니다. The recommended way of doing it is to switch resolutions only when the user clicks on a designated button.


On Android fullscreen controls the SYSTEM_UI_FLAG_LOW_PROFILE flag to View.setSystemUiVisibility(), on devices running Honeycomb (OS 3.0 / API 11) or later.


On Windows Store Apps, switching to non-native resolution is only supported starting from Windows 8.1 and newer.


전체화면 전환은 바로 적용되지 않습니다; 현재 프레임이 끝날 때 적용됩니다.

// Switch to 640 x 480 fullscreen

Screen.SetResolution(640, 480, true);


다른 예제:

// Switch to 640 x 480 fullscreen at 60 hz

Screen.SetResolution (640, 480, true, 60);


다른 예제:

// Switch to 800 x 600 windowed

Screen.SetResolution (800, 600, false);


See Also: resolutions property.

출처 : UNITY 스크립팅 API



좀 더 쉽게 설명을 하자면...


Screen.SetResolution(가로 픽셀, 세로 픽셀, full screen 유무, 지원되는 해상도 지정-기본 0으로 설정되어 있음);


640x480 사이즈에 Full Screen 으로 설정하고 싶다면

Screen.SetResolution(640, 480, true);

이렇게 하시면 됩니다.


주의할 점은 최초 실행시 실행되는 스크립트에 적어주셔야 정상적으로 적용이 됩니다.


그럼 테스트를 위해 몇가지 단계를 순서대로 진행해 보겠습니다. 스탭바이 스탭으로 진행되니 길어도 쉽게 읽어보심 바로 아실 것 같아요!


우선 유니티 새 프로젝트를 만드시고...


예제로 유니티에선 화면 사이즈를 720x1280으로 설정해 보았습니다.

그리고 사이즈가 꽉 차게 나오는지 양 모서리에 이미지를 위치하였습니다. 



양 모서리에 들어간 이미지는 새해라서 .. 돼지해 이미지로 했습니다. :) 이미지는 인터넷 검색으로...

새해 복 많이 받으세요 ^^



테스트를 위해서 대충 한거긴 한데.. 설명을 하자면,

Scene에서 Empty한 Game Object를 생성하시고.. 전 Canvas라고 이름을 정했습니다.

그 Object에 C# 스크립트를 하나 생성해서 붙였습니다. 전 스크립트 이름을 script.cs로 정했습니다.


script.cs 스크립트에 해상도 설정 스크립트를 추가합니다.

이 함수는 최초 실행시에 불려야 하기 때문에 Start() 보다 빠른 Awake()에 붙여 넣었습니다.


    void Awake()

    {

        Screen.sleepTimeout = SleepTimeout.NeverSleep;

        Screen.SetResolution(720, 1280, true);

        

    }


위에 Screen.sleepTimeout = SleepTimeout.NeverSleep; 코딩은 게임 실행 중 화면이 꺼지지 않게 하는 설정입니다. 참고해 주시고...



맨 위의 Rect Transform 에 나오는 사이즈는 Game View의 화면 사이즈입니다.

화면 사이즈를 720x1280으로 설정해 주시고,



Canvas Object에 script.cs 파일을 연결해 주었습니다.


그 후에 Add Component를 클릭하여 [Canvas] 와 [Canvas Scaler (Script)] 를 우선 추가합니다.


Canvas 에서는

Render Mode 에서 Screen Space - Camera 로 설정해서 메인 카메라와 동기화를 시킵니다.


Render Camera 항목에 메인 카메라를 적용 시킵니다. 


Canvas Scaler (Script) 에서는 

UI Scale Mode 에서 Scale With Screen Size로 설정하여 Canvas Object의 하위 리스트에서도 동일하게 Scale이 적용할 수 있도록 설정합니다.


그리고 스케일의 기준 값을 720, 1280으로 적어줍니다.

아래 보이는 Match는 720x1280을 벋어나는 해상도가 있을 때 어디를 기준으로 Match를 할 것인지를 결정합니다.

Width로 하면 가로, Height 로 하면 세로를 기준으로 스케일이 진행됩니다.




여기까지 설정했으면 끝입니다.

빌드를 해보고 폰에 담아보면 이렇게 나옵니다.

이미지는 대충 위치한거라 조금 오차가 있네요..;;


보시면 잘 맞지요? 이런 식으로 화면 해상도를 기준하여 작업하면 개발이 좀 더 수월해 질 거 같습니다.


혹시 다른 팁이 있으신 분은 알려주세요!

처음 개발할 때 틀을 잡는게 매우 어렵더라고요..

정보 공유해요! :)


감사합니다.!


+ Recent posts