「Unity/DIフレームワーク/Extenject/非MonoBehavior」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==非MonoBehavior== MonoBehaviorではないが、MonoBehaviorのように動かせるクラスをDIする方法。 参考:https://light11.hatenadiary.com/entry/2019/0...」) |
(→非MonoBehavior) |
||
(同じ利用者による、間の1版が非表示) | |||
行1: | 行1: | ||
==非MonoBehavior== | ==非MonoBehavior== | ||
− | + | MonoBehaviorではないが、MonoBehaviorのようなライフサイクルで、動かせるクラスをDIする方法。 | |
参考:https://light11.hatenadiary.com/entry/2019/02/28/001135 | 参考:https://light11.hatenadiary.com/entry/2019/02/28/001135 | ||
+ | |||
==サンプル== | ==サンプル== | ||
MonoBehaviourInstaller.cs | MonoBehaviourInstaller.cs | ||
行69: | 行70: | ||
{ | { | ||
Debug.Log("dispose."); | Debug.Log("dispose."); | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ==記述を簡単に== | ||
+ | BindInterfacesAndSelfToを使うと、上記ライフサイクルが自動で、ついてくる。 | ||
+ | 以下は、上記と同じ、処理となる。 | ||
+ | |||
+ | MonoBehaviourInstaller.cs | ||
+ | <pre> | ||
+ | using Zenject; | ||
+ | using System; | ||
+ | |||
+ | public class MonoBehaviourInstaller : MonoInstaller | ||
+ | { | ||
+ | public override void InstallBindings() | ||
+ | { | ||
+ | Container | ||
+ | .BindInterfacesAndSelfTo<MonoBehaviourLogic>() | ||
+ | .AsTransient(); | ||
} | } | ||
} | } | ||
</pre> | </pre> |
2023年11月15日 (水) 12:37時点における最新版
非MonoBehavior
MonoBehaviorではないが、MonoBehaviorのようなライフサイクルで、動かせるクラスをDIする方法。
参考:https://light11.hatenadiary.com/entry/2019/02/28/001135
サンプル
MonoBehaviourInstaller.cs
using Zenject; using System; public class MonoBehaviourInstaller : MonoInstaller { public override void InstallBindings() { Container .Bind( typeof(MonoBehaviourLogic), typeof(IInitializable), typeof(ITickable), typeof(ILateTickable), typeof(IFixedTickable), typeof(IDisposable) ) .To<MonoBehaviourLogic>() .AsTransient(); } }
MonoBehaviourMain.cs
using UnityEngine; using Zenject; public class MonoBehaviourMain : MonoBehaviour { [Inject] MonoBehaviourLogic _logic; }
MonoBehaviourLogic.cs
using UnityEngine; using Zenject; using System; public class MonoBehaviourLogic : IInitializable, ITickable, ILateTickable, IFixedTickable, IDisposable { public void Initialize() { Debug.Log("initialize."); } public void Tick() { Debug.Log("Tick."); } public void LateTick() { Debug.Log("LateTick."); } public void FixedTick() { Debug.Log("FixedTick."); } public void Dispose() { Debug.Log("dispose."); } }
記述を簡単に
BindInterfacesAndSelfToを使うと、上記ライフサイクルが自動で、ついてくる。 以下は、上記と同じ、処理となる。
MonoBehaviourInstaller.cs
using Zenject; using System; public class MonoBehaviourInstaller : MonoInstaller { public override void InstallBindings() { Container .BindInterfacesAndSelfTo<MonoBehaviourLogic>() .AsTransient(); } }