안녕하세요! 스파르타내일배움캠프 김기헌 튜터님의 '유니티 UI 설계 시 고려사항' 특강 내용을 학습하며 정리한 포스트입니다.
기획이 불분명한 상황부터 팀원과의 협업까지, 실무에서 마주할 수 있는 다양한 문제에 대처하는 방법을 다루고 있습니다. 버그를 줄이고 확장성 높은 UI를 만드는 데 이 내용이 큰 도움이 되기를 바랍니다.
문제: 기획서에 나온 내용대로만 UI를 만들면, 기획 범위를 벗어나는 긴 텍스트나 큰 숫자가 들어왔을 때 UI가 깨집니다.
int
(~21억), long
(~922경), BigInteger
(무한대) 등 데이터의 크기에 맞는 자료형을 선택하고, 성능을 고려해야 합니다.자료형 | 크기 | 범위 (대략) |
---|---|---|
int | 32-bit | -21억 ~ 21억 |
long | 64-bit | -922경 ~ 922경 |
unsigned long | 64-bit | 0 ~ 1844경 |
BigInteger | 가변 | 이론상 무한대 (성능 주의) |
문제: 독일어처럼 단어에 성(gender)이 붙어 문장이 길어지는 언어는 한국어나 영어보다 훨씬 많은 공간을 차지합니다.
InputField
: 안정적인 입력 처리Content Type
: InputField
의 Content Type
을 Integer Number
로 설정하여 숫자 외 입력을 1차적으로 막습니다.InputField
포커싱 시 IME 모드를 강제로 비활성화하거나, OnValueChanged
이벤트에서 정규식(Regex
)으로 숫자 외 문자를 제거하는 로직을 추가하여 막을 수 있습니다.ToString("N0")
포맷을 이용해 세 자리마다 콤마(,
)를 자동으로 찍어주면 사용자 경험이 크게 향상됩니다.Singleton
: DontDestroyOnLoad
의 함정중요:
DontDestroyOnLoad
는 하이어라키(Hierarchy)의 최상단(Root)에 있는 게임 오브젝트에만 정상적으로 작동합니다.
Graphic Raycaster
를 잊지 말자Graphic Raycaster
컴포넌트가 자동으로 붙지 않습니다. 이 컴포넌트를 수동으로 추가해주어야 합니다.현금
-> ed 98 84 ea b8 88
).방식 | 장점 | 단점 |
---|---|---|
인스펙터 (OnClick ) | 직관적, 비개발자도 확인 가능 | 코드에서 역추적이 어려움 |
코드 (AddListener ) | 명확한 참조 관계 추적 가능 | 인스펙터에서 보이지 않음, 중복 등록 위험 |
AddListener
사용 시 핵심: 리스너 중복 등록 버그를 막기 위해,OnEnable
에서AddListener
를 했다면, 반드시OnDisable
에서RemoveListener
를 호출하여 쌍으로 관리하는 습관을 들여야 합니다.
Singleton
은 최상단에, AddListener
는 RemoveListener
와 한 쌍으로, 이름은 영어로 짓는 등 안정성을 높이는 규칙을 지키는 것이 중요합니다.이상으로 UI 설계 시 고려사항에 대한 강의 내용 정리를 마칩니다. 읽어주셔서 감사합니다!