c# - serializedObject FindProperty 返回 null
问题描述
我正在尝试在编辑器中获取通用列表属性,但是尽管我已经在目标脚本中对其进行了初始化,但我得到了 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
空了。
解决方案
Unity 只能序列化可序列化类型的列表 - 来自Manual。
您的列表 publicList<Bot<BotType1>> Bots
派生自Bot<T>
具有通用参数的,这意味着它不可序列化。这意味着您列表中的类Bot<BotType1>
未在任何地方设置为可序列化。
要实现您的结果,您应该将其设置为可序列化。
[Serializable] public class BotOfType1 : Bot<BotType1>{}
然后您的列表将变为:
public class GameManager : MonoBehaviour
{
[SerializeField]
public List<BotOfType1> Bots = new List<BotOfType1>();
}
推荐阅读
- python - PIL:单击事件后跳转到下一张照片
- javascript - React Native ios 一信号推送通知 playerid
- javascript - 如何使用 CSS/javascript/jquery 隐藏焦点上的输入值?
- asp.net - ASP.NET Core 2.1 为应用程序设置 appsettings.json 的 BasePath
- python - 如何在 django rest 框架中选择特定字段?
- c# - 使用 Prism 在 Xamarin 中未触发 DelegateCommand
- c++ - Node.js 中的 C++ 插件可以覆盖某些 V8 类或方法吗?
- php - 如何使用 AJAX 保存用户角色?
- syslog-ng - 忽略 syslog-ng 中的特定级别内核日志
- android - Pager-Adapter 在第一次调用时不显示数据