【Unity】ジェネリッククラスをインスペクタでアタッチする

投稿者: | 2023-08-19

ジェネリッククラスをインスペクタでアタッチしてみました。

ジェネリッククラス

public interface ITestGenericClass
{

}

public class TestGenericClass<T> : TestBaseClass, ITestGenericClass where T : ITestClass
{
    protected T test;

}
public interface ITestClass
{

}

public class TestClass : ITestClass
{
    public TestClass() 
    {
    
    }
}

ジャネリッククラスには基底クラスを作ります。

using UnityEngine;

public class TestBaseClass : MonoBehaviour
{
    public virtual void Method() { }
}

インスペクタでアタッチする

基底クラスを使うと異なる派生クラスをアタッチして同じように扱えます。

using UnityEngine;

public class GenericClassTest : MonoBehaviour
{
    [SerializeField] TestBaseClass[] prefabs;

    public void Start()
    {
        for (int i = 0; i < prefabs.Length; i++)
        {
            var test = Instantiate(prefabs[i]);
            test.Method();
        }

    }
}

派生クラス

using UnityEngine;
public class DerivedTestGenericClass : TestGenericClass<TestClass>
{
    public override void Method()
    {
        test = new TestClass();
        Debug.Log(test);
    }
}

コメントを残す

メールアドレスが公開されることはありません。