版本: 2022.3
语言: 英语
自定义序列化
JSON序列化

脚本序列化错误

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

在某些情况下,脚本序列化可能导致错误。以下是修复其中一些错误的方案。

从构造函数或字段初始化器调用Unity脚本API

MonoBehaviour构造函数或字段初始化器内部调用如GameObject.Find之类的脚本API会导致错误:“不允许在MonoBehaviour构造函数(或实例字段初始化器)中调用Find,请改为在Awake或Start中调用。”

通过在MonoBehaviour.Start而不是构造函数中调用脚本API来修复此问题。

在反序列化期间调用Unity脚本API

在对标记有System.Serializable的类的构造函数中进行如GameObject.Find之类的脚本API调用时,将触发错误:“不允许在序列化过程中调用Find,请改为在Awake或Start中调用。”

为了修复这个问题,请修改您的代码,使其不对任何序列化对象的任何构造函数进行脚本API调用。

线程安全的Unity脚本API

上述限制影响到脚本API的大部分。只有Unity脚本API的部分部分不受限制,可以在任何地方调用。这些包括

为了减小序列化过程中出错的风险,只调用自包含且不需要在Unity本身中获取或设置数据的API方法。只有在没有其他选择的情况下才调用这些方法。


• 2017–05–15 翻页发布

错误

自定义序列化
JSON序列化