[펌] 유니티 엔진 팁 - GUI시스템

|
출처 : http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&sn1=&divpage=1&sn=on&ss=on&sc=on&keyword=%C0%AF%B4%CF%C6%BC&select_arrange=last_comment&desc=desc&no=274

이번에 유니티 엔진으로 아이폰/안드로이드 게임을 개발하면서 겪었던 문제점 및 해결방법들 입니다.
특별한게 있는건 아니지만 공유하는 측면에서 올려보겠습니다~


1. 유니티 GUI시스템.
유니티를 쓰는 사람들의 말을 들어보면 Unity3D의 기본적인 GUI는 가급적
사용하지 말것을 권장하고 있습니다. 빈 OnGUI함수조차도 성능을 저하시킨다고 하네요.
저희 프로젝트에서는 EzGUI라는 써드파티 라이브러리를 구입하여 사용했습니다.

장점으로는...
- UI이미지들을 텍스쳐 아틀라스(atlas)로 만들어서 좌표를 따다 쓰는 방식이라,
한번의 drawcall로 모든 UI가 그려지기 때문에 성능이 좋음.
- 디자이너가 작업시 위지윅 방식이 가능함(에디터내에서 직접 보면서 배치할 수 있음).

단점은...
- 스킨시스템은 지원 안됨(모서리만 따서 늘려쓴다던가 하는 방식).
- atlas(아틀라스:텍스쳐들을 모아놓은 하나의 큰 텍스쳐)를 만들때 이미지 배치가 수시로 바뀜.
어차피 uv좌표를 직접 입력하진 않기 때문에 문제는 없지만 웬지 개운하지 않음.
특시 prefab과 연결시켜 놓으면 값이 꼬이는 문제가 발생하여서
연결을 끊고 atlas를 만들어야 해서 번거로움이 심했음.
(이 부분은 저희가 잘못 사용한것일지도 모르겠습니다. 정식 강좌를 본것이 아니라
인터넷에서 그때그때 찾아 한 것이라^^)
- 업데이트 소식이 없음.

디자이너와의 분업 측면
- 디자이너가 레이아웃을 잡고, prefab으로 만든 후 패키징 하여 프로그래머에게 전달하여 작업함.
큰 무리는 없었지만 Unity3D에디터에 캐시파일이 남아서 인지,
가끔 종료한 후 다시 열어줘야 새로운 내용이 적용되었음.
- 공식 사이트나 포럼에서도 분업에 대한 정확한 메뉴얼을 찾지 못하여 이 방식이 올바른것인지는 애매하였음.
- 공동작업에 대한 고려가 많이 부족하다는 느낌을 받음.

해상도 작업
- 기본적으로 여러 해상도에 대한 지원이 부족한듯 함.
- 화면 크기가 바뀌었을때 이미지 스케일이 원하는 대로 나오지 않았기 때문에 직접 로직을 작성하였음.
- 안드로이드에서 가장 많이 사용하는 480*800을 기준으로 이미지작업을 하고,
화면 세로 크기의 비율을 구해서 모든 UI오브젝트들의 스케일에 적용시켜주었음.
- 일부UI 컨트롤에는 적용시키지 말아야 할 경우도 생김
(예를 들면 슬라이더바같은 경우 바와 knob으로 구성되는데 부모-자식 관계에 있다보니
스케일이 이중으로 적용되어서 의도한것과 다르게 나타났다.
따라서 이런 경우에는 자식 오브젝트들의 스케일 적용은 건너뛰는 루틴을 넣어야 했다).

폰트작업
- BMFont라는 툴로 ttf파일에서 텍스쳐와 좌표값을 뽑아낸 뒤 불러다 쓰는 방식임.
- 한글 입/출력은 잘 됨.
- 폰트 색상 조절은 원하는 컬러의 material을 만들어서 사용하는 방식이며,
크기 조절은 오브젝트의 스케일값으로 조절이 가능함.

* 다음프로젝트에는 NGUI를 사용할 예정입니다~


Trackback 0 And Comment 0