包含此页的版本:
不含此页的版本:
当您使用BuildPipeline.BuildAssetBundles要构建 AssetBundle,Unity 会将以下文件写入指定的输出目录:
注意:如果使用 Addressables 包构建 AssetBundle,它会生成一个 AssetBundle 文件,但不会生成清单文件或清单包。
Unity 存档文件格式是一种通用打包格式,可以存储任何类型的文件,类似于 .zip 文件。存档文件被挂载到 Unity 的虚拟文件系统中,这使得它们可以在不同平台上以统一的方式访问。
存档格式用于 AssetBundle,其中存档文件是作为 AssetBundle 构建过程的最后阶段创建的。加载 AssetBundle 时,它们会挂载到 Unity 虚拟文件系统中。
存档格式也用于使用 LZ4 构建的播放器压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩、动画压缩、音频压缩、构建压缩。
请参阅术语表,在这种情况下,存档将在 Player 运行时自动挂载。有关更多信息,请参阅BuildOptions.CompressWithLz4API 文档
在大多数情况下,您不需要在低级别与存档进行交互,并且应该使用AssetBundleAPI 或 Addressables 包。但是,有关如何使用低级 API 直接管理存档文件的更多信息,请参阅ArchiveFileInterfaceAPI 文档。
AssetBundle文件是一个存档文件,其中包含多个文件,这些文件在运行时加载到资产中。下图包含 AssetBundle 文件布局的示例:
ArchiveFileSystem有两个容器:SerializedFile,它表示 Unity 序列化文件格式的主 AssetBundle 文件。它包含 AssetBundle 对象以及 AssetBundle 中包含的所有资产(显式或隐式)中的对象。.resource格式。所有音频或视频都存储在.resource格式,纹理存储在.resS格式。
内容场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表AssetBundle 类似,但它针对单个场景的流加载进行了优化。它包含两个SerializedFile每个场景的实例。
在某些情况下,你可能希望直接查看资产包文件,或比较两个资产包的内容。
Unity 编辑器安装包括WebExtract和Binary2Text可执行文件。您可以使用WebExtract以提取嵌套在 AssetBundle 中的文件,类似于提取 zip 文件。您可以使用Binary2Text生成二进制文件内容的文本格式转储SerializedFile.其输出类似于 Unity 使用的 YAML 格式。
您还可以使用UnityDataTools使用dump参数来查看 AssetBundle 的 SerializedFile 的内容。
序列化文件的原始内容通常技术性很强且很大,尤其是当它包含着色器在 GPU 上运行的程序。更多信息
请参阅术语表、网格或二进制数据。但是,这些转储可用于查明文件中特定对象的问题。使用差异工具比较两个相似资产包的提取内容可以帮助识别差异。
对于生成的每个 AssetBundle,Unity 都会生成一个关联的清单文件。清单文件的扩展名为.manifest您可以使用任何文本编辑器打开它。
它包括以下内容:
BuildPipeline.GetHashForAssetBundle.BuildPipeline.GetCRCForAssetBundle.SerializeReference类型。有关更多信息,请参阅BuildPlayerOptions.assetBundleManifestPath.以下是 AssetBundle 清单文件内容的示例:
ManifestFileVersion: 0
UnityVersion: 6000.2.0a6
CRC: 4208470199
Compression: None
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 81197c4674c1f389b3568a0aa1b41119
TypeTreeHash:
serializedVersion: 2
Hash: 3c2131fb3360d17991621f547033218e
IncrementalBuildHash:
serializedVersion: 2
Hash: 489e266cfc1b361a94c3efc39afecb54
HashAppended: 0
ClassTypes:
- Class: 1
Script: {instanceID: 0}
- Class: 4
Script: {instanceID: 0}
SerializeReferenceClassIdentifiers: []
Assets:
- Assets/Scenes/Scene2.unity
- Assets/Scenes/SampleScene.unity
Dependencies:
- C:/MyBuild/audio.bundle
- C:/MyBuild/sprites.bundle
Unity 使用.manifest文件。执行构建时,Unity 会检查现有的 AssetBundle 和.manifest文件,以确定资产包是否需要重建或可以重复使用。如果您删除.manifest文件,则 Unity 始终从头开始重建 AssetBundle。
加载 AssetBundle 不需要清单文件,因此您无需分发它们。
Unity 还生成一个清单包,这是一个以它所在的目录命名的 AssetBundle 文件。它包含AssetBundleManifest对象,Unity 使用它来确定在运行时加载哪些捆绑包依赖项。
生成还生成了两个附加文件。
第一个是一个小型 AssetBundle,以它所在的目录(构建 AssetBundle 的位置)命名。这个文件称为Manifest Bundle它包含 AssetBundleManifest 对象,该对象对于确定在运行时加载哪些捆绑依赖项非常有用。有关如何使用此捆绑包的信息,请参阅从捆绑包加载资产。
清单包还包括自己的.manifest文件。下面是清单包的清单文件示例:
ManifestFileVersion: 0
AssetBundleManifest:
AssetBundleInfos:
Info_0:
Name: scene1assetbundle
Dependencies: {}
这.manifest清单包的文件记录了资产包的关系以及它们的依赖关系。此信息类似于AssetBundleManifest对象。
清单文件对于防止您在 AssetBundle 中使用的未使用的类型的代码剥离非常重要。如果您在项目中启用了代码剥离,请将BuildPlayerOptions.assetBundleManifestPath在执行玩家构建时传递到此清单的路径。
AssetBundle 构建还会生成一个BuildReport文件,该文件是 UnitySerializedFile写给Library/LastBuild.buildreport在项目目录中。此文件可用于查看构建步骤的计时摘要和资产包内容的详细视图。您可以使用BuildReportAPI 从BuildReport文件。
您还可以使用以下工具查看BuildReport文件: