EHTool은 게임 개발에서 반복적으로 사용되는 기능을 모듈화하여 생산성을 높이기 위한 보조 도구입니다. 언어 변경, UI 제어, 리소스 관리, 데이터 파싱 등 다양한 기능을 통합적으로 제공합니다.
📁 기본 유틸리티
- 인터페이스를 통한 리소스 자료에 대한 일관적인 접근 기능
- IDictionaryConnector: 데이터 파싱 시스템
- JsonDictionaryConnector: json으로 저장된 Dictionary 자료형 접근
- XMLDictionaryConnector: xml로 저장된 Dictionary 자료형 접근
- IDictionaryConnector: 데이터 파싱 시스템
- 싱글톤 패턴을 제네릭으로 구현하여 반복적인 객체 생성 방지
- MonoSingleton
: MonoBehaviour의 기능을 사용해야할 때 사용 - Singleton
: MonoBehaviour의 기능을 사용하지 않아도 될 때 사용 - MonoBehaviour을 상속받지 않아도 되는 경우 불필요한 Unity 라이프사이클 의존성을 줄이고자 함
- MonoSingleton
- AssetOpener: 에셋을 불러오는 리소스 로더
- 현재는 리소스 폴더에서 경로 기반으로 불러오는 기능 제공
- Addressable Asset System 등 다른 리소스 관리 시스템을 위한 기능 준비중
🌐 EHTool.LangKit: 다국어 지원 모듈
- 언어 설정에 따른 UI 텍스트 자동 변경 기능 구현
- 게임에서 사용되는 언어를 key, value로 이루어지게 구성하고, Dictionary 형태로 저장된 각 언어별 사전을 불러와 게임에 번역 기능 제공
- 언어별 사전은 Json, XML 형태로 저장하며, IDictionaryConnector를 이용하여 저장된 방식에 따라 다르게 접근 가능
-
📂 JSON 언어 데이터 예시 보기
※ 위 데이터는 Key에 대응되는 지정한 번역값으로 사용됩니다.{ "btn_Close": "닫기", "btn_Open": "열기", "lbl_Score": "점수", "msg_Exit": "정말 종료하시겠습니까?" }
-
📂 XML 언어 데이터 예시 보기
※ 위 데이터는 Key에 대응되는 지정한 번역값으로 사용됩니다.<List> <Element key="btn_Close" value="닫기" /> <Element key="btn_Open" value="열기" /> <Element key="lbl_Score" value="점수" /> <Element key="msg_Exit" value="정말 종료하시겠습니까?" /> </List>
- 옵저버 패턴을 이용하여 구현
- LangManager에서 언어가 변경되는 경우 그 언어에 맞는 자료를 부르고, 구독하는 EHText, EHTmp에 변경 내용을 전달
- EHText, EHTmp는 key가 지정되어 있으며, 언어가 변경되는 경우 LangManager의 알림을 받아 key에 해당하는 새로운 value가 UI에 표시
- EHTextEditor, EHTmpEditor 구현을 통한 key 지정의 가시화 기능 제공
🧩 EHTool.UIKit: UI 관리 모듈
- 싱글톤 패턴의 UIManager가 GUIWindow를 상속하는 프리팹의 생성, 우선순위에 따른 가시화 관리
- 주요 UI 타입:
- GUIFullScreen: 전체 화면 UI
- GUIPopUp: 팝업 UI
- 현재의 GUIFullScreen이 닫힐 때 함께 닫힘
- UI 단일 인스턴스 제어 및 우선순위 기반 로직 제공
- 동일 우선순위의 새 UI가 열릴 경우 기존 UI는 비활성화
- 새 UI보다 기존 UI가 우선순위가 높은 경우 새 UI가 다음 UI로 대기
- FullScreen UI를 닫으면 이전 UI 복원
- PopUp은 FullScreen 위에 독립적으로 열리며 유사한 방식으로 관리됨
📌 정리
- 게임 프로젝트 내 반복되는 구조를 재사용 가능한 모듈로 구성
- 다양한 프로젝트에서 범용적으로 활용 가능한 유틸리티 중심
- Json/XML 데이터 구조, UI 동적 로딩, 언어 시스템 등 핵심 기능 포함