【Unity】【Zenject】さまざまなInstallerの設定方法

ZenjectのいろんなInstallerの使い方を紹介します。

Unity2018.2
Zenject7.3.1

Installer?

Scene ContextやProject ContextのInspectorを見ると、三つのInstallersの設定欄があります。

f:id:halya_11:20190102233916p:plain

この記事ではこれらの使い方と設定方法を紹介します。

なおZenjectの基本的なところは下記の記事をご覧ください。

light11.hatenadiary.com

Mono Installers

一番よく使うのがMono Installerです。
使い方としては、Mono Installerを継承したクラスを作り、InstallBindings()にDIの処理を書きます。

using Zenject;

public class ExampleInstaller : MonoInstaller
{
    public override void InstallBindings()
    {
        Container
            .Bind<Example>()
            .AsTransient();
    }
}

これを適当なGameObjectにアタッチしてContextのMono Installersに代入するだけです。

f:id:halya_11:20190102234642p:plain

Prefab Installers

Prefab Installersは前節で作ったMono InstallerをPrefab化しただけのものです。
これをContextのPrefab Installersに代入すれば使えます。

f:id:halya_11:20190102234851p:plain

Scriptable Object Installers

Scriptable Object Installerはその名の通りScriptable ObjectをInstallerとして使うためのクラスです。
ScriptableObjectなのでランタイムで値を更新できるというメリットがあります。

使い方としては、まずScriptableObjectInstallerを継承したクラスを作成します。

using UnityEngine;
using Zenject;

[CreateAssetMenu(fileName = "ExampleSOInstaller", menuName = "Installers/ExampleSOInstaller")]
public class ExampleSOInstaller : ScriptableObjectInstaller<ExampleSOInstaller>
{
    public override void InstallBindings()
    {
        Container
            .Bind<Example>()
            .AsTransient();
    }
}

次に右クリックメニューなどからScriptableObjectのインスタンスを作成します。
この辺りは通常のScriptableObjectの使い方と変わりません。

f:id:halya_11:20190102235253p:plain

あとはこれをContextのScriptable Object Installersに代入するだけです。

f:id:halya_11:20190102235343p:plain

参考

github.com

関連

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com