블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2307)
Unity3D (564)
Programming (470)
Unreal (4)
Gamebryo (56)
Tip & Tech (182)
협업 (34)
3DS Max (3)
Game (12)
Utility (114)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (37)
Android (12)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (5)
Total1,330,496
Today16
Yesterday334
Statistics Graph

달력

« » 2019.10
    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    

공지사항

태그목록

NGUI로 여러 해상도 대응 꽉 채우기

(참조 : http://hanamoni.tistory.com)



 1280x720 해상도 기준


[순서]

1) NGUI-UIRoot.cs 열기.


2) Inspector Window 에서 설정.

    Scaling Style - Constrained On Mobiles

    Content Width - 1280 Fit  (Check)

    Content Height - 720 Fit  (Check)


3) UIRoot-Update() 함수에서 아래를 교체

   [원본]

    mTrans.localScale = new Vector3(size, size, size);


   [변경]

    float fX = (NGUITools.screenSize.x / 1280f);

    float fTemp = (720f * fX);

    float fY = NGUITools.screenSize.y / fTemp;

    mTrans.localScale = new Vector3(size, size * fY, size);





[참조 링크의 내용]


NGUI 새로운 버젼.. 


해상도가 안맞아서 해상도에 맞게 늘릴려고 만든. 코드.


UIRoot 에서


기준을 1280 X 720 할때.


Inspector Window 에서 설정.

Scaling Style - Constrained On Mobiles

Content Width - 1280 Fit  Check 

Content Height - 720 Fit  Check



UIRoot 스크립트 에서  변경.



void Update ()  에서.


mTrans.localScale = new Vector3(size, size, size);  < -  이코드를 




float x_value = (screen.x / 1280f);

float temp_value = (720f * x_value);

float y_value = screen.y / temp_value;


mTrans.localScale = new Vector3(size , size * y_value, size );


요렇게 변경하면


기준 1280 x 720 으로 잡고 모든해상도에 맞게 잘 늘어나거나 줄어든다.

Posted by blueasa

댓글을 달아 주세요

  1. 2015.07.08 14:37 지나가던 개발자  댓글주소  수정/삭제  댓글쓰기

    궁금한 점이 있습니다. 다른게 아니라
    위의 설정 중 UIPanel - SoftClip 으로 결정 시 안의 내용물들이 출력이 되지 않거나 처음에 잘되다가 스크롤하다보면 아이템이 사라지는 문제가 발생하는데요.

    혹 해결점을 알 수 있을까요?

    • 2015.07.15 17:42 신고 blueasa  댓글주소  수정/삭제

      우선..죄송합니다.
      제가 해외여행을 다녀오는지라 이제서야 리플을 보고 답변달게 됐습니다. (_ _)
      리플에 적으신 현상은 제가 테스트를 해보지 못해서 현재로선 제대로 된 답변을 드릴수가 없을 것 같습니다.
      혹여나 나중에 알게된다면 본문을 수정해 놓겠습니다. :)



참조 : http://www.tasharen.com/?page_id=197


동영상 링크 : https://www.youtube.com/watch?v=XAeRXckXMMw


Posted by blueasa

댓글을 달아 주세요

1) NGUI의 Panel에 UIStretch 추가

    (조절이 필요한 곳에 모두 넣는다. 패널이 여러개면 여러 패널에 모두 순서대로 진행)


2) Ui Camera에 NGUI 카메라 추가(Drag & Drop)


3) Style : Both(카메라에 맞춰서 스케일이 조절돼버림. 스케일 수정 안됨)


4) 스케일이 직접 조절이 안되므로 Relative Size를 조절함


5) Relative Size 조절(결과적으로 패널의 스케일 값이 1이 나오게 Relative Size 값을 넣는다.)

   X = 패널의 1 / Scale.X

   Y = 패널의 1 / Scale.Y


[문제점]

- 해상도에 맞게 늘어나긴 하지만 UI 크기가 늘어나거나 줄어드는 문제가 있음.


[참조 글]

뀨니 2012.12.28 09:23:58 댓글달기
저도 같은문제로 게시판 뒤지다가 어떤분것 보고 도움을 받았는데요 NGUI쓰신다면 NGUI에 있는 스크립트를 사용하시면 됩니다.UIStretch스크립트를사용해서 해상도에따라 셋팅값에 따라 해상도에 맞춰 비율적으로 강제적으로 늘릴 수 있습니다. 예를 들자면UIStretch를 패널에 추가하시고, UI Camera에 NGUI카메라를 넣으시고, Style을 Both로 맞추시면 카메라에 맞춰 늘어나게 되는데요, 여기서 크기를 Relative Size로 셋팅해주시면 됩니다. 
저같은 경우는 엄청나게 커져버려서 X = 0.00085 Y = 0.00125 뭐이런식으로 맞췄 습니다.


참조글 링크 : http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=23789&page=0&sca=UNITY&sfl=wr_subject%7C%7Cwr_content&stx=UIStretch&spt=0&page=0&currentId=44#c_23991

Posted by blueasa

댓글을 달아 주세요

유니티로 게임을 만들었는데
기기마다 해상도의 가로세로 비율이 다 제각각 이여서 개발자 입장에서는 각각의 해상도마다 수정작업을 하러면 좀 짜증이 난다.
뭔가 방법이 있을거 같아서 검색해봤더니 답이 있었다.


Screen.SetResolution 라는 메소드를 사용하면 대부분의 안드로이드 단말기의 해상도에 맞춰 게임화면을 변경할 수 있다.

Screen.SetResolution( 원하는 해상도 width값, 원하는 해상도 height값, 풀스크린 여부 );


나의 경우는 아이폰 해상도 비율인 2:3에 맞춰서 작업을 해두었기 때문에 
안드로이드에서도 2:3 비율로 작업한 이미지들이 짤리지 않게 하기 위해 게임이 실행하는 단말기의 스크린값을 아래와 같이 수정하였다.

Screen.SetResolution(Screen.width, (Screen.width/2)*3, true);  // 2:3 screen rate


겔럭시S 의 경우 해상도가 480 x 800 인데 위와 같이 입력해주면 의도했던 모든 UI가 짤림 없이 화면에 다 보여진다.
단점으로는 이미지가 단말기의 해상도 비율에 따라 UI가 길죽하게 보여지거나 넓직하게 보여지게 된다. 
( 16:9  비율의 디지털TV 에서 4:3 비율의 케이블 방송을 보는것과 같은 현상)


※ 주의 : SetResolution 메소드가 동작하지 않는 단말기도 있다고 한다.



출처 : http://clack.tistory.com/146


Posted by blueasa
TAG 해상도

댓글을 달아 주세요