以下の内容はhttps://baba-s.hatenablog.com/entry/2022/07/25/090000より取得しました。


【Unity】MonoBehaviour の参照を Interface で Inspector に設定できる「Serializable Interface」紹介

はじめに

「Serializable Interface」を Unity プロジェクトに導入することで
MonoBehaviour の参照を Interface で Inspector に設定できるようになります

使用例

public interface ICharacter
{
    void Log();
}

たとえば ICharacter インタフェースが存在し、

using UnityEngine;

public class Player : MonoBehaviour, ICharacter
{
    public void Log() => Debug.Log( "Player" );
}
using UnityEngine;

public class Enemy : MonoBehaviour, ICharacter
{
    public void Log() => Debug.Log( "Enemy" );
}

ICharacter インタフェースを実装した
Player と Enemy という MonoBehaviour が存在し、

Player と Enemy がそれぞれアタッチされたゲームオブジェクトがシーンに存在しており
これらを ICharacter インタフェースで Inspector に設定できるようにしたい場合、

using TNRD;
using UnityEngine;

public class Example : MonoBehaviour
{
    public SerializableInterface<ICharacter> m_character;

    private void Awake()
    {
        m_character.Value.Log();
    }
}

上記のように SerializableInterface<ICharacter> という型でフィールドを定義します

すると ICharacter インタフェースを実装している MonoBehaviour を
Inspector で設定できるようになります

Player コンポーネントを設定した場合は Player.Log が、
Enemy コンポーネントを設定した場合は Enemy.Log が
ICharacter インタフェース経由で呼び出されることが確認できます




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

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