facebook twitter hatena line email

「Unity/DIフレームワーク/Extenject/非MonoBehavior」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==非MonoBehavior== MonoBehaviorではないが、MonoBehaviorのように動かせるクラスをDIする方法。 参考:https://light11.hatenadiary.com/entry/2019/0...」)
(相違点なし)

2023年11月15日 (水) 03:41時点における版

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