以下の内容はhttps://baba-s.hatenablog.com/entry/2018/08/17/180000より取得しました。


【Unity】【Zenject】シーン内のコンポーネントの参照を自動で設定する方法

はじめに

using UnityEngine;

public class PauseUI : MonoBehaviour
{
    public void Open()
    {
        Debug.Log( "Open" );
    }
}

例えば、上記のようなスクリプトが存在して、
このコンポーネントを他のスクリプトから使用したい場合、

using UnityEngine;

public class Example : MonoBehaviour
{
    public PauseUI m_pauseUI;

    private void Start()
    {
        m_pauseUI.Open();
    }
}

このように public 変数や SerializeField 属性が適用された変数を定義して、

f:id:baba_s:20180814205843p:plain

Inspector で参照を設定して使用しますが、
 
Zenject を使用することで、Inspector で参照を設定しなくても
他のオブジェクトが持つコンポーネントにアクセスできるようになります

検証環境

  • Unity 2018.2.2f1
  • Zenject 7.1.0

手順

f:id:baba_s:20180814210147p:plain

他のスクリプトから参照したいコンポーネントを持つオブジェクトに
「Zenject Binding」をアタッチします

f:id:baba_s:20180814210233p:plain

「Zenject Binding」の「Components」の欄に、
他のスクリプトから参照したいコンポーネントをドラッグして

f:id:baba_s:20180814210425p:plain

このように設定します

f:id:baba_s:20180814210433p:plain

次に、Hirarchy の「Create>Zenject>Scene Context」を選択して

f:id:baba_s:20180814210439p:plain

「SceneContext」オブジェクトを作成します

using UnityEngine;
using Zenject;

public class Example : MonoBehaviour
{
    [Inject] private PauseUI m_pauseUI;

    private void Start()
    {
        m_pauseUI.Open();
    }
}

最後に、参照を保持したい変数に「Inject」属性を適用します

f:id:baba_s:20180814210926p:plain

これでゲームを実行すると、参照が自動で設定され、
正常にコンポーネントの機能を呼び出せることが確認できます

このように、Zenject を使用することで、Inspector で参照を設定しなくても
他のオブジェクトが持つコンポーネントにアクセスできるようになります

参考サイト様




以上の内容はhttps://baba-s.hatenablog.com/entry/2018/08/17/180000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14