Unity/DIフレームワーク/Extenject
提供: 初心者エンジニアの簡易メモ
Extenjectとは
UnityのDIフレームワーク。Zenjectは、作者が前務めてた会社で作られたDIフレームワークの名前。
ダウンロード
unityのassetstore https://assetstore.unity.com/packages/tools/utilities/extenject-dependency-injection-ioc-157735
公式 https://github.com/modesttree/Zenject/releases
サンプル
ILogic.cs
public interface ILogic
{
bool Exec();
}
HogeLogic.cs
public class HogeLogic : ILogic
{
public bool Exec()
{
Debug.Log("HogeLogc Exec");
return true;
}
}
CarView.cs
using UnityEngine;
using Zenject;
public class CarView : MonoBehaviour
{
[Inject] ILogic _logic;
void Start()
{
if (_logic != null)
{
_logic.Exec();
}
}
}
HogeLogicInstaller.cs
using Zenject;
public class HogeLogicInstaller : MonoInstaller
{
public override void InstallBindings()
{
Container
.Bind<ILogic>()
.To<HogeLogic>()
.AsCached();
}
}
- Scene選択し、Hierarchyに、Create EmptyでGameObjectを作り、CarViewの名前に変更し、CarView.csを、AddCompornentする。
- Scene選択し、Hierarchyに、Create EmptyでGameObjectを作り、HogeLogicInstallerの名前に変更し、HogeLogicInstaller.csを、AddCompornentする。
- Hierarchyから右クリックし、Zenject/SceneContextを追加
- SceneContextを選択肢InspectorのMonoINstallersに、HogeLogicInstallerのGameObjectをドラッグする。
- 実行するとCarのHogeLogicが実行できる
installer<TDerived>エラー
public class AInputInstaller : Installer<AInput>の部分で、 以下エラーが発生。
unity はジェネリック型またはメソッド installer<TDerived> 内で型パラメーター'TDerived として使用できません。
InstallBindingsメソッドを実行するクラスの継承元を : Installer<AInput> などから MonoInstaller へ
参考:https://github.com/modesttree/Zenject
