Prosto
유니티 해상도 설정(SetResolution & UI) 본문
유니티로 만든 게임을 특정 해상도로 지정해주고 싶을 때가 있습니다.
다양한 해상도가 있는 스마트 폰에 게임을 만들 때도 만들 때 특정 해상도가 있겠죠?
(자동 해상도면 휴대폰에 따라 보이는 화면이 달라지고 그에 따라 설정도 모두 해줘야 할 테니까요...)
일단 해상도 지정에는
Screen.SetResolution(가로 픽셀, 세로 픽셀, full screen 유무);
가 사용됩니다.
예를 들어 720x1280으로 해상도를 고정시키고 싶다면
Screen.SetResolution(720, 1280, true);
이렇게 지정해주면 되겠죠?
또, 1280x720으로 해상도를 고정시키고 싶다면
Screen.SetResolution(1280, 720, true);
이렇게 되겠고요.
(최초 실행 시 실행되는 스크립트에 넣어두면 됩니다.)
그럼 이제 SetResolution을 실제로 적용해 볼까요?
또, 적용 유무에 따라 어떤 차이가 있는지도 살펴보도록 하죠.
먼저 씬에 저렇게 모서리마다 네모난 박스를 놓았습니다.
그리고 빌드한 후 실행하면
박스들이 모서리에 있다면 의도한 대로 게임이 실행된거라고 볼 수 있겠죠?
apk로 빌드한 후 실행해봤습니다.
이렇게 됐네요. 왜 옆으로 약간 남았을까요?
테스트한 기기가 1280 x 800의 해상도를 가진 태블릿이었기 때문에
이렇게 옆에 약간의 공간이 남게 됐습니다.
그러면 사실 의도한 바와 다르게 게임이 실행될 수 있겠죠?
(볼이 벽에서 튕겨나와야 하는데, 옆 면이 남아있다면 자연스럽지 않겠죠.)
그러면 720x1280으로 해상도를 고정해봅시다.
(참고로 여기서
Screen.sleepTimeout = SleepTimeout.NeverSleep;
이 부분은 게임 실행 중 화면이 꺼지지 않도록 설정하는 부분입니다.)
그리고 마찬가지로 apk파일을 만들어서 실행해보겠습니다.
어떤가요? pc에서 설정했던 비율과 마찬가지로 화면이 구성되어있죠?
의도한 바에 맞게 게임이 실행되는 것을 확인할 수 있습니다.
왜 필요한지, 어떤 때 사용해야 하는지 아시겠죠?
그럼 UI도 가능하면 어떤 해상도의 디바이스에서든 같은 위치에
나올 수 있도록 해볼까요?
간단합니다.
이렇게 UI들이 들어있는 Canvas를 선택합니다.
그러면 우측의 Inspector 탭을 확인할 수 있겠죠?
여기서 Canvas Scaler (Script)의 내용 중
UI Scale Mode의 우측 목록을 눌러
Scale With Screen Size를 선택합니다.
(스크린 사이즈에 따라 스케일 조정을 해줄 수 있습니다.)
Reference Resolution에 기본이 되는 해상도(스크린 비율)를 적어주시면 됩니다.
그리고 그 밑에 Match라고 있는 부분이
어떤 부분에 따라 UI 스케일을 조정할 것인가에 대한 부분입니다.
가로에 UI 위치가 꼭 맞아야 한다면 Width에
세로에 UI 위치가 꼭 맞아야 한다면 Height에 가깝게 하면 되겠죠?
(Width 0 - - - - - - 1 Height 입니다.)
게임 해상도 설정과 해상도에 따라 UI 위치(크기)도 적절하게 바뀔 수 있도록 설정해봤습니다.
'Programing > Unity 3D' 카테고리의 다른 글
Projectⓐ 완성본, JJumping Ball -유니티2D 점프 게임 (4) | 2016.12.20 |
---|---|
따라하는 유니티 2D 프로젝트ⓑ -9 (8) | 2016.11.02 |
유니티 안드로이드(APK) 만들기 (SDK, JDK, NDK) (4) | 2016.10.29 |
따라하는 유니티 2D 프로젝트ⓑ -8 (3) | 2016.10.28 |
따라하는 유니티 2D 프로젝트ⓑ -7 (1) | 2016.10.20 |