One minute
[Unity] ジェネリックを使っている親クラス内のクラスはインスペクタに表示できない
お世話になっております。
しゃまとんです。
タイトルの通りなのですが、クラス内に定義した内部クラスや構造体をインスペクタに表示して、色々調整した場合があると思います。
上記の場合[System.Serializable]と[SerializableField]を利用すれば問題なく表示されます。
これに加えて、親クラス(基底クラス)でジェネリックを利用しつつ内部クラスを定義して小クラスからインスペクタ上で操作したいと思い下記みたいな感じにしました。
using UnityEngine;
using System.Collections;
public class TestParent<T> : MonoBehaviour where T : MonoBehaviour {
static public T instance;
[System.Serializable]
public struct TestInnerParent {
public int hoge;
public float fuga;
}
[SerializeField]
private TestInnerParent innerValue;
// シングルトンにする処理...
}
using UnityEngine;
using System.Collections;
public class TestChild : TestParent<TestChild> {
public int childHoge;
public int childFuga;
}
こうすると表示されなくなってしまいました。
どうしても表示したい場合は内部クラスを外に出せば表示できるようです。
using UnityEngine;
using System.Collections;
public class TestParent<T> : MonoBehaviour where T : MonoBehaviour {
static public T instance;
[SerializeField]
private TestInnerParent innerValue;
// シングルトンにする処理...
}
[System.Serializable]
public struct TestInnerParent {
public int hoge;
public float fuga;
}
これで表示されます。
他の方も書かれていますが、ジェネリック周りはちとうまくいかないのですね。
以上です。
■参考