facebook twitter hatena line email

Unity/DIフレームワーク/Extenject/非MonoBehavior

提供: 初心者エンジニアの簡易メモ
2023年11月15日 (水) 03:41時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「==非MonoBehavior== MonoBehaviorではないが、MonoBehaviorのように動かせるクラスをDIする方法。 参考:https://light11.hatenadiary.com/entry/2019/0...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

非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.");
    }
}