序列化是将数据结构或对象状态转换为Unity可以存储并在以后重新构造的格式的自动过程。(有关更多信息,请参阅脚本序列化文档。)
在某些情况下,脚本序列化可能导致错误。以下是修复其中一些错误的方案。
在MonoBehaviour构造函数或字段初始化器内部调用如GameObject.Find之类的脚本API会导致错误:“不允许在MonoBehaviour构造函数(或实例字段初始化器)中调用Find,请改为在Awake或Start中调用。”
通过在MonoBehaviour.Start而不是构造函数中调用脚本API来修复此问题。
在对标记有System.Serializable
的类的构造函数中进行如GameObject.Find之类的脚本API调用时,将触发错误:“不允许在序列化过程中调用Find,请改为在Awake或Start中调用。”
为了修复这个问题,请修改您的代码,使其不对任何序列化对象的任何构造函数进行脚本API调用。
上述限制影响到脚本API的大部分。只有Unity脚本API的部分部分不受限制,可以在任何地方调用。这些包括
Mathf函数
简单的自包含结构体;例如数学结构体如Vector3和QuaternionUnity表示旋转的通用数据方式。在编写处理旋转的代码时,通常应使用Quaternion类及其方法。更多信息
查看术语表
为了减小序列化过程中出错的风险,只调用自包含且不需要在Unity本身中获取或设置数据的API方法。只有在没有其他选择的情况下才调用这些方法。
• 2017–05–15 翻页发布
错误