文档

Unity Engine

Unity Engine

脚本序列化错误

Diagnose and fix common script serialization errors in your project.
阅读时间2 分钟最后更新于 1 个月前

在某些情况下,脚本序列化可能会导致错误。下面列出了其中一些错误的修复方法。

从构造函数或字段初始化函数调用 Unity Scripting API

在 MonoBehaviour 构造函数或字段初始化器中调用脚本 API(例如 GameObject.Find)会触发错误:“无法在 MonoBehaviour 构造函数(或实例字段初始化器)中调用 Find,请改为在 Awake 或 Start 中调用。”
解决此问题的方法是在 MonoBehaviour.Start 中而不是在构造函数中调用脚本 API。

在反序列化期间调用 Unity Scripting API

从标记为
System.Serializable
的类的构造函数中调用脚本 API(如 GameObject.Find)会触发错误:“无法在序列化过程中调用 Find,请改为在 Awake 或 Start 中调用。”
要解决此问题,请编辑代码,确保不会在任何序列化对象的构造函数中调用任何脚本 API。

线程安全的 Unity 脚本 API

大多数脚本 API 都受上面列出的限制所影响。只有部分 Unity Scripting API 免受影响,可从任何位置接受调用。如下:
为了降低序列化过程中出错的风险,只能调用不需要在 Unity 本身中获取或设置数据的独立 API 方法。仅在没有其他选择的情况下才调用它们。

其他资源