脚本序列化错误
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
从标记为 的类的构造函数中调用脚本 API(如 GameObject.Find)会触发错误:“无法在序列化过程中调用 Find,请改为在 Awake 或 Start 中调用。”
System.Serializable要解决此问题,请编辑代码,确保不会在任何序列化对象的构造函数中调用任何脚本 API。
线程安全的 Unity 脚本 API
大多数脚本 API 都受上面列出的限制所影响。只有部分 Unity Scripting API 免受影响,可从任何位置接受调用。如下:
-
Mathf 函数
-
简单的独立结构;例如,像 Vector3 和 Quaternion 这样的数学结构
为了降低序列化过程中出错的风险,只能调用不需要在 Unity 本身中获取或设置数据的独立 API 方法。仅在没有其他选择的情况下才调用它们。