반응형
Notice
Recent Posts
Recent Comments
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

Do Something IT

[Unity3D] NGUI Multi resolution 본문

Unity3D

[Unity3D] NGUI Multi resolution

아낙시만더 2013. 9. 23. 12:51
반응형

NGUI Multi resolution 를 위해 여러가지 방법이 있다. 그것은 아래와 같다.


1. Ngui에서 제시하는 UIRoot Script를 통해 ReScaling 하는 방법

2. 화면 비율을 찾아 전체적으로 조절하는 방법

3. Camera.orthographicSize를 조절하는 방법


1. Ngui에서 제시하는 UIRoot Script를 통해 ReScaling 하는 방법


 UIRoot를 사용하여 ReScailing 하는 방법은 화면의 해상도 높이를 기준으로 ReScailng 하는 방법으로 되어있다. 이는 같은 

비율의  해상도의 화면에서는 문제없이 잘 작동되지만 다른 비율의 해상도에선 문제가 생기게 된다. 넓이의 크기를 무시 하기때문에 Full Size의 배경 그림같은 경우 옆이 짤리거나 모자라 빌수 있다. 

일단 이 스크립트의 인스펙터 속성을 알아보면 Scaling Style, Manual height , Minimum Height, Maximum Height가 있다.

Scaling Style에는 PixelPerfect,FixedSize,FixedSizeOnMobiles와 같은 속성이있다.

PixelPerfect는 이미지 크기 그대로 보여주게 되고

FixedSize는 ManualHeight 값으로 값을 고정합니다.

FixedSizeOnMobiles도 ManualHeight 값으로 값을 고정합니다.

 Manual height는 고정 기준 값을 말합니다.

 Minimum Height, Maximum Height는 해상도가 Manual Height보다 크거나 작은 해상도를 만났을때 가변적으로 바뀔수 있는 범위를 말합니다. 이는 절대적으로 높이를 기준으로 합니다.

자 이와 같지만 넓이 부분은 높이 기준으로 가변 하기 때문에 넓이에 대한 다른 수정 작업이 필요합니다. 


가로 기준 1024(대상 해상도높이) / 480(고정 해상도 높이) * 320(고정 해상도 넓이) = 682

세로 기준 720(대상 해상도높이) / 320(고정 해상도 높이) * 480(고정 해상도 넓이) = 1082


참고 : 바로가기


2. 화면 비율을 찾아 전체적으로 조절하는 방법

UIRoot을 아예 꺼버리고 배경으로 쓸 애들은 화면 전체 크기로 늘려버리고 컨텐츠들은 적절한 위치에 위치 시키는 방법이 있다.

이땐 아래와 같이 구한 float 값을 전체 크기로 쓸 애들만 모인 패널의 사이즈를 늘려준다.

float perx = (기준 해상도 넓이) / Screen.width; 
float pery = (기준 해상도 높이)/ Screen.height; 


3. Camera.orthographicSize를 조절 하는 방법

 

 해상도 넓이 높이 중 큰것을 기준으로 비율을 구해 화면 안 내용을 확대 축소 시킨다.

// NGUI면 아마 "UI Root(2d)" 라고 있을겁니다. 
UIRoot    root = GameObject.Find(szRootName).GetComponent<UIRoot>(); 
// 요건 씬이 어떻게 제작되었는지 모르기 때문에 일단 
// 안전하게 박아뒀습니다.  게임 가로 480기준... 
root.automatic = true;  //이건 아마 버전없이 업되서 없을꺼다 Scaling Style를 조정하자.
root.manualHeight = 480; 
root.minimumHeight = 480; 
root.maximumHeight = 1280; 

GameObject obj  = GameObject.Find(szCameraName); 

Camera    camera = obj.GetComponent<Camera>(); 

// 원래 게임이 320*480으로 제작되어 있다 가정했을경우 
float perx = 320.0f / Screen.width; 
float pery = 480.0f / Screen.height; 
float v = (perx > pery) ? perx : pery; 
camera.orthographicSize = v; 


참조 : 바로가기


반응형
Comments