Version: 2017.3
自定义序列化
UnityEvent

脚本序列化错误

序列化是将数据结构或对象状态转换为 Unity 可存储并在以后可重构的格式的自动过程。(请参阅有关脚本序列化的文档以了解更多信息。)

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

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

MonoBehaviour 构造函数或字段初始化函数中调用诸如 GameObject.Find 之类的脚本 API 会触发错误:“Find is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call in in Awake or Start instead.”

解决此问题的方法是在 MonoBehaviour.Start 中而不是在构造函数中调用脚本 API。

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

从标有 System.Serializable 的类的构造函数中调用诸如 GameObject.Find 之类的脚本 API 会触发错误:“Find is not allowed to be called during serialization, call it from Awake or Start instead.”

要解决此问题,请编辑代码,确保不会在任何序列化对象的构造函数中调用任何脚本 API。

线程安全的 Unity Scripting API

大多数脚本 API 都受上面列出的限制所影响。只有部分 Unity Scripting API 免受影响,可从任何位置接受调用。它们如下:

为了降低序列化过程中出错的风险,只能调用不需要在 Unity 本身中获取或设置数据的独立 API 方法。仅在没有其他选择的情况下才调用它们。


• 2017–05–15 页面已发布并进行了编辑审查

自定义序列化
UnityEvent