Unity文档——资产,对象和序列化

本文深入探讨Unity的序列化系统,详细介绍了资产、对象的区别,包括内部资产和对象、对象间的引用、文件GUID和本地ID的作用。还讨论了Unity如何处理资产和对象的引用,以及序列化、资源生命周期和加载大型层次结构的策略,对于理解和优化Unity项目至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本章介绍Unity的序列化系统的深层内部,以及Unity如何在Unity Editor和运行时维护不同对象之间的健壮引用。它还讨论了对象和资产之间的技术区别。这里涉及的主题是理解如何在Unity中有效加载和卸载资产的基础。正确的资产管理对于缩短加载时间和降低内存使用率至关重要。

1.1。内部资产和对象

要了解如何在Unity中正确管理数据,了解Unity如何识别和序列化数据非常重要。第一个关键点是AssetsUnityEngine.Objects之间的区别。

一个资产是磁盘上的文件,存储在资产为Unity项目的文件夹中。纹理,3D模型或音频剪辑是常见的资产类型。某些资产包含Unity原生格式的数据,例如材料。其他资产需要处理为本机格式,例如FBX文件。

UnityEngine.Object,或对象以大写“O”,是一组序列化的数据统称为描述资源的特定实例的。这可以是Unity Engine使用的任何类型的资源,例如网格,精灵,AudioClip或AnimationClip。所有对象都是UnityEngine.Object基类的子类。

虽然大多数对象类型都是内置的,但有两种特殊类型。

  1. 一个个ScriptableObject提供了一个方便的系统开发人员可以定义自己的数据类型。Unity可以对这些类型进行本机序列化和反序列化,并在Unity Editor的Inspector窗口中进行操作。

  2. 一个MonoBehaviour提供链接到一个包装MonoScript。MonoScript是一种内部数据类型,Unity用于保存对特定程序集和命名空间内特定脚本类的引用。该MonoScript并没有包含任何实际的可执行代码。

资产和对象之间存在一对多的关系; 也就是说,任何给定的Asset文件都包含一个或多个Objects。

1.2。对象间引用

所有UnityEngine.Objects都可以引用其他UnityEngine.Objects。这些其他对象可以驻留在同一资产文件中,也可以从其他资产文件导入。例如,材质Object通常具有一个或多个对纹理对象的引用。这些纹理对象通常从一个或多个纹理资源文件(例如PNG或JPG)导入。

序列化时,这些引用由两个单独的数据组成:文件GUID本地ID。文件GUID标识存储目标资源的资产文件。一个本地唯一(1)本地ID标识资产文件中的每个对象,因为资产文件可能包含多个对象。

文件GUID存储在.meta文件中。这些.meta文件是在Unity首次导入资产时生成的,并存储在与资产相同的目录中。

可以在文本编辑器中查看上述标识和引用系统:创建一个新的Unity项目并更改其编辑器设置以公开可见元文件并将资产序列化为文本。创建材质并将纹理导入到项目中。将材质指定给场景中的立方体并保存场景。

使用文本编辑器打开与材料关联的.meta文件。标有“guid”的行将出现在文件顶部附近。此行定义材料Asset的文件GUID。要查找本地ID,请在文本编辑器中打开材料文件。材质Object的定义如下所示:

---!u!21&2100000
材料:
 serializedVersion:3
 ......更多数据.....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值