包含此页的版本:
不含此页的版本:
应用以下编码实践和组织原则来防止错误并优化项目中的序列化性能。
大多数 Unity API 只能从主线程调用。不要从可序列化类型的构造函数和字段初始值设定项调用 Unity API,因为它们在单独的加载线程上运行。
在开发版本开发版本包括调试符号并启用性能分析器。更多信息
请参阅术语表,如果您尝试从加载线程调用主线程 API,Unity 会抛出错误。在发布版本中,代码运行时没有错误,但可能会在应用程序中产生崩溃和其他意外行为。
提示:为了降低序列化过程中出错的风险,请勿调用可能影响项目状态或涉及其他 Unity 对象的 API 方法。可以安全调用的 API 包括Debug.Log以及那些处理简单数据类型的数据,例如数学函数和Vector3.
不要从终结器方法启动序列化。终结器不在主线程上运行。垃圾回收器确定它们何时运行,在某些情况下,它们可能根本不运行。
尝试序列化终结器中的数据可能会导致意外行为和崩溃。有关详细信息,请参阅有关终结器的 Microsoft 文档。
您可以按如下方式组织数据,以确保最佳地使用 Unity 的序列化:
UnityEngine.Object(例如派生自 ScriptableObject 的类),Unity 仅序列化引用,而不是整个对象图。因此,数据在 ScriptableObject 中仅序列化一次,而不是在引用它的每个点上。同样,您可以使用[SerializeReference]属性,如果要在单个 MonoBehaviour 或 ScriptableObject 中多次引用相同的自定义 C# 类。有关详细信息,请参阅自定义类的序列化。