테스트 자동화 관련 검색을 하다가 Zenject 이란 것을 발견
https://github.com/Unity-Technologies/Zenject
DI(=Dependency Injection) 에 대한 개념에 대해 알게 됨
필요한 내용(데이터, 기능= Dependency )을 사용하는 곳에 직접 연결하는 게 아니라 DI 솔루션이 간접적으로 연결해 주는(=Injection) 방식
각 기능간 의존성을 분리하는 것이 핵심
다른 언어나 환경에서 종종 사용 되는 듯 했지만, 게임 쪽에서는 생소한 내용 이었음
Zenject 은 DI 방식을 통해 Unity 에서도 테스트가 용이한 방식으로 개발 할 수 있게 도움을 줌
참고로 포켓몬 GO 개발 시 이 방식을 적용 했다고 함
https://youtu.be/8hru629dkRY?si=2P7KBJeYgefeVkAu
DI 는 설계가 중요함, 어디서 어떤 값을 어떻게 가져다 쓸지 고민해야 됨
개발 난이도가 올라감, 익숙하지 않은 패턴
어디에서 어떤 값을 가져다 쓰는지 직관적으로 알 수 없음, 간접적으로 연결되기 때문에 IDE Tool 에서 참조 검색 등으로 확인이 어려움
Bye Singleton, Static, Setter, Getter
단이 테스트 용이
Live 프로젝트에 적용하는 것은 쉽지 않고, 신규 프로젝트에서 적용해 볼만 함
Zenject 에 대한 전체적인 강좌도 있음
https://youtu.be/IS2YUIb_w_M?si=_MRKvZwDCPx4UHLr
참고로 Unity 용 DI 솔루션은 다른 것도 있음
https://vcontainer.hadashikick.jp/
https://github.com/gustavopsantos/Reflex
'Works > Unity 3D' 카테고리의 다른 글
AltTester (0) | 2024.08.14 |
---|---|
ScriptableObject vs new Class (0) | 2024.05.21 |
[Unity] TMP_InputField 의 inputValidator 사용법 (0) | 2023.09.07 |
Unity Sentis 설치 방법 (0) | 2023.08.18 |
Unity Muse (0) | 2023.08.16 |
댓글