실무에서 NGUI로 UI 작업을 담당했다.
NGUI로 작업을 하면서 느낀 점이나 기억할 것들을 나열했다.
100% 맞는 내용은 아닐 수도 있음 주의.
NGUI Atlas
- Atlas Maker의 설정은 깃으로 공유가 안된다
- Atlas Update치고 Save Project까지 해야한다
isEnabled vs enabled
isEnabled: 버튼이나 토글 같은 것들의 특성 활성화
enabled: 컴포넌트 자체 활성화
Label 설정
Max Lines = 1 : Use Ellipsis 옵션 적용 가능
Kepp crisp = Never : 창모드일 때 글자 크기 변하는 현상 방지
Toggle 그룹
- group을 0으로 설정하면 개별적으로 작동한다. 마치 라디오버튼
- group이 같은 것들 끼리는 활성화 상태는 1개 또는 0개 존재할 수 있다. 한개가 활성화되면 원래 활성화되어 있던 토글은 꺼진다. 이때 둘 다 onChange 콜백 실행.
- 그럼 같은 그룹에서 0개인 상황을 만들고 싶다면. Button과 Toggle를 다른 게임 오브젝트에 배치하고 토글의 밸류를 false해주면 된다.
- 버튼의 onClick과 토글의 onChange는 게임 오브젝트 내 컴포넌트 순서에 따라 더 상위에 있는 것이 먼저 발동된다.
- ex) 토글 ㄴ 버튼 : toggle.value 변동. 토글의 onChange 발동. -> 버튼의 onClick 발동. 변동된 toggle.value.
- ex) 버튼 ㄴ 토글 : 버튼의 onClick 발동. toggle.value 변동 전 -> toggle.value 변동. 토글의 onChange 발동.
Toggle과 Slider의 Set() 메소드
toggle.Set(true); 와 toggle.value = true; 는 같은 기능을 한다. 토글의 값을 true로 바꿔주고 onChange 콜백이 발동된다.
toggle.Set(true, false); 는 토글의 값을 true로 바꿔주지만 onChange 콜백이 발동되지는 않는다. UI 표현만 바꿔주고 싶을 때 사용했다.
- 게임 오브젝트가 꺼져있을 때는 콜백이 실행되지 않는다.
Sprite나 Texture의 알파값은 자식들에게도 영향을 미친다.
- 부모의 알파값의 영향을 받기 때문에, 부모 오브젝트를 비워두고 자식으로 스프라이트들을 배치했다.
NGUI의 Tween 발동
PlayForward(); : From -> To
PlayReverse(); : To -> From
- 자식 게임오브젝트의 BoxCollider의 영향을 받는다. BoxCollider마다 DragScrollView 컴포넌트를 부착해야 매끄럽게 작동된다.
- 부착되어 있지 않다면 해당 콜라이더 영역에서 스크롤이 불가능하다.
- 컴포넌트의 인스펙터 변수는 따로 할당하지 않아도 게임 오브젝트가 활성화되면서 할당되는 것 같다.
NGUI의 Localization
- 손쉽게 다국어 기능이 구현 가능하다.
- Label에 Localize 컴포넌트를 부착하고 Key를 입력
Localization.language = key; : 언어 변경
Localization.Get(key); : Value 가져오기
- Key-Value는 CSV파일로 관리
- Key와 Value는 콤마로 분리
- Value는 문자, 숫자 이외에 기호가 들어가면 ""로 감싸는 것이 좋다.
- \n 사용 가능
- {0} 넣고
string.Format(); 가능
- [3B3B4D][-] 컬러 넣기 가능
Localization.onLocalize : 언어가 바뀔 때의 콜백