facebook twitter hatena line email

「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
  
==SceneContext追加==
 
Hierarchyから右クリック、Zenject/SceneContextを追加
 
  
 
==参考==
 
==参考==
 
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();
    }
}
  1. Scene選択し、Hierarchyに、Create EmptyでGameObjectを作り、CarViewの名前に変更し、CarView.csを、AddCompornentする。
  2. Scene選択し、Hierarchyに、Create EmptyでGameObjectを作り、HogeLogicInstallerの名前に変更し、HogeLogicInstaller.csを、AddCompornentする。
  3. Hierarchyから右クリックし、Zenject/SceneContextを追加
  4. SceneContextを選択肢InspectorのMonoINstallersに、HogeLogicInstallerのGameObjectをドラッグする。
  5. 実行するとCarのHogeLogicが実行できる

installer<TDerived>エラー

public class AInputInstaller : Installer<AInput>の部分で、 以下エラーが発生。

unity はジェネリック型またはメソッド installer<TDerived> 内で型パラメーター'TDerived として使用できません。

InstallBindingsメソッドを実行するクラスの継承元を : Installer<AInput> などから MonoInstaller へ

参考: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/