Zenject
Project Context
Project全体のDIコンテナ、グローバルなストアを持ちたいときとか
本当は Scene Paranting を使うべき
using UnityEngine;
public interface IProjectDataSource {
void SetGlobalValue(int value);
int? GetGlobalValue();
}
public class ProjectDataSource: IProjectDataSource {
private int? globalValue = 42;
public void SetGlobalValue(int value) => globalValue = value;
public int? GetGlobalValue() => globalValue;
}using Zenject;
public class ProjectInstaller : MonoInstaller {
public override void InstallBindings() {
Container
.Bind<IProjectDataSource>()
.FromInstance(new ProjectDataSource())
.AsSingle();
}
}Scene Parenting
SubContainer
動的に生成されるGameObjectに対してDIしたいときは
DIContainer.InstantiatePrefab()
はアンチパターン? で Factoryを使う?
Factory
Zenject Memory Pool の情報が少なすぎる
UIWidgets + Zenject
Unity でも DI 使ったりしたいし画面もいい感じに作りたい「Zenject & UIWidgets」 その 2 - かずきのBlog@hatena