Unity 中的一些内置功能自动使用序列化。以下列举了这些功能。
有关更多信息,请参阅脚本序列化文档。
Unity 使用序列化将 场景场景包含游戏的环境和菜单。将每个独特的场景文件视为一个独特的等级。在每场场景中,您放置自己的环境、障碍物和装饰,本质上是以零散的方式设计和构建游戏。 更多信息
在术语表中查看、资源可用于您游戏或项目的任何媒体或数据。资源可以来自 Unity 外部创建的文件,例如 3D 模型、音频文件或图片。您还可以在 Unity 中创建一些资源类型,例如动画控制器、音频混音器或渲染纹理。 更多信息
在术语表中查看和AssetBundles 从计算机硬盘驱动器中保存和加载。这包括在您的脚本 API 对象中保存的数据,例如 MonoBehaviour 组件和 ScriptableObjects。
这发生在编辑器的播放模式和编辑模式下。
当您在检查器窗口中查看或更改 GameObject 组件字段值时,Unity 会将此数据序列化并在 检查器一个 Unity 窗口,用于显示所选 GameObject、资源或项目设置的详细信息,允许您检查和编辑值。 更多信息
在术语表中查看窗口中显示它。检查器窗口在显示字段值时不会与 Unity 脚本 API 通信。如果您的脚本中使用属性,当您在检查器窗口中查看或更改值时,任何属性的getter和setter永远不会被调用,因为 Unity 直接序列化检查器窗口字段。
当您更改并保存脚本时,Unity 将重新加载所有当前加载的脚本数据。它首先将所有可序列化变量存储在所有加载的 脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
在术语表中查看中,并在加载脚本后恢复它们。在脚本重新加载后,所有非可序列化数据都会丢失。
这会影响所有编辑器窗口以及项目中的所有 MonoBehaviours。与其他 Unity 中的序列化情况不同,即使它们没有 'SerializeField' 属性,默认情况下在重新加载时也会序列化私有字段。
在序列化的背景下,一个 预制体允许你存储包含组件和属性的 GameObject 的资源类型。预制体作为一个模板,可以从它创建场景中的新的对象实例。 更多信息
参见术语表 是一组或多个 GameObjectUnity 场景中的基本对象,可以代表角色、道具、景观、摄像机、途径点等。GameObject 的功能由附加到它的组件定义。 更多信息
参见术语表 和 组件GameObject 的功能性部分。GameObject 可以包含任何数量的组件。Unity 具有许多内置组件,你可以通过编写继承自 MonoBehaviour 的脚本来自定义组件。 更多信息
参见术语表 的序列化数据。预制体实例包含对预制体源及其修改列表的引用。修改是对预制体源进行的更改,以创建特定的预制体实例。
预制体实例仅存在于你在 Unity 编辑器中编辑项目时。在项目构建过程中,Unity 编辑器从其两套序列化数据(预制体源和预制体实例的修改)中实例化 GameObject。
当你对存在于 场景 中的任何东西(如预制体或GameObject)调用 Instantiate 方法时,Unity 会进行序列化。这既发生在运行时也发生在编辑器中。从 UnityEngine.Object 衍生的所有内容都可以被序列化。
接下来,Unity 创建一个新的 GameObject 并在它上面反序列化数据。然后,Unity 以不同的变体运行相同的序列化代码来报告正在引用的其他 UnityEngine.Objects
。它会检查所引用的所有 UnityEngine.Objects
,以查看它们是否是正在实例化的数据的一部分。如果引用指向“外部”的内容,如纹理,Unity 会保留该引用。如果引用指向“内部”的内容,如子 GameObject,Unity 会将引用修正为相应的副本。
Resource.GarbageCollectSharedAssets()
是原生的 Unity 垃圾收集器,它执行的功能与标准的 C# 垃圾收集器不同。它在加载场景后运行,并检查不再被引用的对象(如纹理)并安全地卸载它们。原生的 Unity 垃圾收集器在一种变体中运行序列化器,其中对象报告对外部 UnityEngine.Objects
的所有引用。这就是为何一个场景使用的纹理可以在下一个场景中卸载的原因。
• 2017-05-15 页面发布
内置使用