「Unity/DIフレームワーク/Extenject」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→installerエラー) |
|||
行9: | 行9: | ||
https://github.com/modesttree/Zenject/releases | https://github.com/modesttree/Zenject/releases | ||
− | ==installer<TDerived>エラー== | + | ==サンプル== |
+ | ILogic.cs | ||
+ | <pre> | ||
+ | public interface ILogic | ||
+ | { | ||
+ | bool Exec(); | ||
+ | } | ||
+ | </pre> | ||
+ | HogeLogic.cs | ||
+ | <pre> | ||
+ | public class HogeLogic : ILogic | ||
+ | { | ||
+ | public bool Exec() | ||
+ | { | ||
+ | Debug.Log("HogeLogc Exec"); | ||
+ | return true; | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | CarView.cs | ||
+ | <pre> | ||
+ | using UnityEngine; | ||
+ | using Zenject; | ||
+ | public class CarView : MonoBehaviour | ||
+ | { | ||
+ | [Inject] ILogic _logic; | ||
+ | void Start() | ||
+ | { | ||
+ | if (_logic != null) | ||
+ | { | ||
+ | _logic.Exec(); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | HogeLogicInstaller.cs | ||
+ | <pre> | ||
+ | using Zenject; | ||
+ | public class HogeLogicInstaller : MonoInstaller | ||
+ | { | ||
+ | public override void InstallBindings() | ||
+ | { | ||
+ | Container | ||
+ | .Bind<ILogic>() | ||
+ | .To<HogeLogic>() | ||
+ | .AsCached(); | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | #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>の部分で、 | public class AInputInstaller : Installer<AInput>の部分で、 | ||
以下エラーが発生。 | 以下エラーが発生。 | ||
行17: | 行74: | ||
参考:https://github.com/modesttree/Zenject | 参考:https://github.com/modesttree/Zenject | ||
− | |||
− | |||
==参考== | ==参考== | ||
https://www.theylive.co.jp/unitydi%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFextenjectzenject%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%BE%E3%81%A8/ | https://www.theylive.co.jp/unitydi%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFextenjectzenject%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%BE%E3%81%A8/ |
2021年8月16日 (月) 20:05時点における版
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