我试图在编辑器中获取通用列表属性,但我得到的是 null,尽管我已经在目标脚本中对其进行了初始化。
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
设置为 null。
最佳答案
Unity 只能序列化可序列化类型的列表 - 来自 Manual .
您的列表公开 List<Bot<BotType1>> Bots
源自 Bot<T>
具有通用参数,这意味着它不可序列化。这意味着您列表中的类(class) Bot<BotType1>
未在任何地方设置为可序列化。
要实现您的结果,您应该将其设置为可序列化。
[Serializable] public class BotOfType1 : Bot<BotType1>{}
那么你的列表会变成:
public class GameManager : MonoBehaviour
{
[SerializeField]
public List<BotOfType1> Bots = new List<BotOfType1>();
}
关于c# - serializedObject FindProperty 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56964880/