我试图在编辑器中获取通用列表属性,但是尽管我已经在目标脚本中对其进行了初始化,但我却获得了空值。
public class GameManager : MonoBehaviour
{
[SerializeField]
public List<Bot<BotType1>> Bots = new List<BotCar<BotType1>>();
}
[CustomEditor(typeof(GameManager))]
GameManagerEditor : Editor
{
private SerializedProperty botsProperty;
void OnEnable()
{
botsProperty = serializedObject.FindProperty("Bots");
}
}
我得到botsProperty
为空。
答案 0 :(得分:1)
Unity只能序列化可序列化类型的列表-来自Manual。
您的列表公共List<Bot<BotType1>> Bots
源自具有通用参数的Bot<T>
,这意味着它不可序列化。这意味着列表Bot<BotType1>
中的类未在任何地方设置为可序列化。
要获得结果,您应该将其设置为Serializable。
[Serializable] public class BotOfType1 : Bot<BotType1>{}
然后您的列表将变为:
public class GameManager : MonoBehaviour
{
[SerializeField]
public List<BotOfType1> Bots = new List<BotOfType1>();
}