はじめに
この記事では「Unity3D-SerializableInterface」というパッケージを使ってインターフェース型のメンバ変数をインスペクターに表示してそこに GameObject をアサインできるようにする方法をザックリと解説します。
手順
- 「Unity3D-SerializableInterface」の GitHub リポジトリから最新版のリリースのZIPファイルをダウンロードして解凍します。
- 解凍したフォルダをプロジェクトウィンドウの Assets フォルダ以下にドラッグ&ドロップしてインポートします。
- 以下のコードのように記述します。
using UnityEngine;
using TNRD; //追加
public interface ISampleInterface
{
public void SampleMethod();
}
public class SampleClass : MonoBehaviour
{
// SerializableInterface でラップする
[SerializeField]
private SerializableInterface<ISampleInterface> sampleInterface;
private void Start()
{
// Value を挟むとそのインターフェースのメソッドを呼び出せる
sampleInterface.Value.SampleMethod();
}
}
この状態で Unity エディタに戻ると、そのインターフェースを実装したクラスがアタッチされている GameObject をアサインできるようになっているかと思います。