본문으로 건너뛰기

UNInject

Unity + Inject = UNInject

Unity를 통한 게임 개발에서 가장 높은 사용성과 퍼포먼스를 보장하는 차세대 D.I (의존성 주입) 솔루션 입니다.
기존 D.I 솔루션들에서 퍼포먼스, 다형성. 그리고 가장 중요한 사용성을 보장하기 위해 고안되었습니다.

  • 가장 빠른 주입 속도 : VContainer와 동일 선상의 상수 복잡도 O(1) 주입 지원. (SnapShot, Bake... Zenject의 최대 20배)

  • Top Tier GC Alloc : Resolve (Getter) 의 비용을 자동으로 제거합니다. (Editor Time Bake, Roslyn CodeGen)

  • 엄청난 학습곡선 (Positive) : 매우. 매우 쉬운 학습 곡선을 자랑합니다. 따라서 후반 도입이 고려가 가능합니다.

  • 직관적인 패턴 강제 : Unity의 Scene을 보듯, 가장 직관적이고, 높은 사용성을 보장합니다.

  • 3 Tier LifeCycle : 유니티 엔진에서 최적화된, 각 용도에 알맞은 세 가지 Scope 계층을 강제합니다.


메인 프레임 설계도

Pure C# ServiceMonoBehaviourInstaller / ScopeTickableRegistryObjectInstaller
Pure C# LayerMonoBehaviourDI & Scope ManagementTickable ServiceITickable · IFixedTickableDomain Logic비즈니스 규칙 · Pure C#Repository데이터 접근 · 외부 소스View ComponentMonoBehaviour · UI · 렌더링Mono Data BridgeTransform · Unity 데이터 전달MasterInstallerGlobal Scope · DontDestroyOnLoadSceneInstallerScene Scope · 씬 생명주기TickableRegistryUpdate · FixedUpdate · LateUpdateObjectInstallerLocal Scope · 계층 내 주입

성능 그래프 (Git Storage Critiqued)

UNInject v2.1
96/100
VContainer
74/100
Zenject
71/100
Detailed Breakdown
런타임 성능
UNInject v2.1
9
스냅샷 배열 Tick + Bake 기반 조회
VContainer
9
IL emit 고속 주입
Zenject
5
리플렉션 의존, 느림
에디터 툴링
UNInject v2.1
10
GraphView + BakeValidator + FallbackGuard
VContainer
5
에디터 툴링 없음
Zenject
7
기본 수준
IL2CPP 안전성
UNInject v2.1
9
Roslyn 1순위 → ExprTree → FieldInfo
VContainer
8
IL emit, AOT 부분 제약
Zenject
6
AOT 제약 많음
API 간결성
UNInject v2.1
9
어트리뷰트 단순 선언
VContainer
8
Binding 간결
Zenject
6
Binding DSL 복잡
스코프 관리
UNInject v2.1
10
Named 바인딩 + parentScope + Tickable
VContainer
8
LifetimeScope 계층
Zenject
9
SubContainer 정밀
Unity 통합 깊이
UNInject v2.1
10
IPoolInjectionTarget + SpawnInjected
VContainer
7
PlayerLoop ITickable
Zenject
8
Signals 내장
진단/빌드 검증
UNInject v2.1
10
Named 검증 + 생성자 폴백 감지
VContainer
5
없음
Zenject
7
기본 수준
런타임 유연성
UNInject v2.1
10
Create<T> + ITickable 위임
VContainer
8
PlayerLoop ITickable
Zenject
9
PlayerLoop + Signals
Key Comparisons

UNInject v2.1

Bake 기반 제로런타임 스캔 (Awake 부하 X)
Roslyn → ExprTree → FieldInfo 폴백 체인
GraphView 시각화 & BakeValidator 검증
RegistryKey 기반 다중 바인딩 지원
ITickable 스코프 위임 및 풀 연동

VContainer

생성자 주입 중심의 Pure C# 설계
IL emit 기반 고속 주입 성능
LifetimeScope 기반의 명확한 계층
PlayerLoop 기반 Pure C# 생명주기
MessagePipe 공식 통합

Zenject

가장 방대한 생태계와 레퍼런스
SubContainer를 통한 정밀 스코프 제어
강력한 내장 Signals 시스템
Scene/Project Context 계층 구조
다양한 확장 플러그인 존재