Prosto

유니티 해상도 설정(SetResolution & UI) 본문

Programing/Unity 3D

유니티 해상도 설정(SetResolution & UI)

Prosto 2016. 10. 31. 04:19

 

유니티로 만든 게임을 특정 해상도로 지정해주고 싶을 때가 있습니다.

다양한 해상도가 있는 스마트 폰에 게임을 만들 때도 만들 때 특정 해상도가 있겠죠?

(자동 해상도면 휴대폰에 따라 보이는 화면이 달라지고 그에 따라 설정도 모두 해줘야 할 테니까요...)

 

일단 해상도 지정에는

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 위치(크기)도 적절하게 바뀔 수 있도록 설정해봤습니다.

 

Comments