일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리눅스
- 명령어
- Collection Framework
- 비행기 모드
- 안드로이드 Application Lifecycle
- 안드로이드
- 게임
- TCP 네트워크 방식의 연결
- 에셋
- 아이패드
- 스랄 특성
- 히오스
- End of Darkness
- 나지보 특성
- game
- 소캣(Socket)
- 어플
- tcp
- 변경된 정보
- php 홈디렉토리 변경방법
- 기업의 행포
- 집 정리
- unity
- 나지보
- 포트(Port)
- 아이폰
- 컬렉션 프레임
- tcp네트워크
- 자바
- 벨팡
- Today
- Total
Do Something IT
[Unity3D] NGUI Multi resolution 본문
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;
참조 : 바로가기
'Unity3D' 카테고리의 다른 글
[Unity] xml 사용 (0) | 2013.09.25 |
---|---|
엑셀 자료구조 설계 누가 해야할까? (0) | 2013.09.24 |
게임 디자인 패턴 (0) | 2013.08.27 |
[Unity3D] [System.Serializable] c# 인스펙터 나타내기 (0) | 2013.08.23 |
[Unity3d] 케릭터 이동과 카메라도 같이 이동 및 회전 (0) | 2013.05.10 |