본문 바로가기
Works/Unity 3D

Dependency Injection

by Vader87 2024. 8. 14.
반응형

테스트 자동화 관련 검색을 하다가 Zenject 이란 것을 발견

https://github.com/Unity-Technologies/Zenject

 

GitHub - Unity-Technologies/Zenject: Dependency Injection Framework for Unity3D

Dependency Injection Framework for Unity3D . Contribute to Unity-Technologies/Zenject development by creating an account on GitHub.

github.com

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/

 

About | VContainer

VContainer - the fastest DI (Dependency Injection) for Unity Game Engine

vcontainer.hadashikick.jp

https://github.com/gustavopsantos/Reflex

 

GitHub - gustavopsantos/Reflex: Minimal dependency injection framework for Unity

Minimal dependency injection framework for Unity. Contribute to gustavopsantos/Reflex development by creating an account on GitHub.

github.com

 

반응형

'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

댓글