【Unity3D技术文档翻译】第1.9篇 使用 Unity AssetBundle Browser tool (AssetBundle系列完结)

上一章:【Unity3D技术文档翻译】第1.8篇 AssetBundles 问题及解决方法
本章原文所在章节:【Unity Manual】→【Working in Unity】→【Advanced Development】→【AssetBundles】→【Unity Asset Bundle Browser tool】
Unity AssetBundle 浏览管理工具(Unity Asset Bundle Browser tool)
注意:这个工具是 Unity 标准功能之外的附加功能。想要使用它,你需要从 GitHub(点击链接) 下载,并在下载和安装 Unity 编辑器之后单独安装。
这个工具能让你浏览并编辑项目中 AssetBundles 的结构。它将阻止你创建无效的 AssetBundle,以及提醒你已经存在的 AssetBundles 是否有一些问题。它同样具有基本的构建功能。
之前我们选择资源,并在编辑器中手动设置它们的 AssetBundle,现在我们也可以使用 AssetBundle 浏览管理工具来处理这些。它可以在任何 Unity5.6 及以上版本中加入使用(将 AssetBundleBrowser 文件夹拖入项目任意位置),并且将在 Window 菜单下创建一个新的菜单选项 AssetBundle Browser。它的 configure 和 build 功能在新的窗口中被分为两个标签栏(最新的有三个标签栏,多了一个 inspect 标签):

需要 Unity5.6 及以上版本
Configure 窗口使用
注意:这个功能处于预发布状态,因此在你使用之前,我们建议你将项目进行备份。
这个窗口提供了浏览器样式的界面,用于管理和修改项目中的 AssetBundles。第一次打开这个工具的时候,它将在后台解析所有 AssetBundles 数据,并慢慢地标记它检测到的警告和错误。它将尽可能的与项目保持同步,但并不是总能察觉到工具外发生的动态。想要强制进行错误检测,或者想要更新工具的状态,点击左上角的刷新按钮即可。
窗口被分为了四个部分:Bundle 列表(Bundle List)、Bundle 详情(Bundle Details)、 资源列表(Asset List),以及 资源详情(Asset Details)。如图:

Bundle 列表
左边的窗格展示了项目中所有的 AssetBundles。可使用的功能有:
- 选择一个或者一批 Bundles,在右侧的资源列表窗格中查看 Bundles 中包含的资源。
- 带有版本变量的 Bundles 会变成深灰色,并且能被展开,显示版本变量列表。
- 右击或者缓慢地双击,来重命名 Bundle 或者 Bundle 文件夹。
- 如果一个 Bundle 有任何错误、警告或者信息提示,它的右侧会出现一个图标。鼠标悬停在图标上可以看到更详细的信息。
- 如果一个 Bundle 包含至少一个场景(使这个 Bundle 成为“场景Bundle”),同时还包含了非场景资源,那么就会被添加“报错”标记。在你解决这个错误前,该 Bundle 将不会被构建。
- 包含重复资源的 Bundles 将被添加“警告”标记。
- 空 Bundles 将被添加“信息提示”标记。由于许多原因,空 Bundles 十分不稳定,并且有时候可能会从列表中消失。
- Bundles 文件夹具有所包含的 Bundles 的所有信息提示。
- 想要解决重复资源警告,你可以采取以下方法:
① 右击一个单独的 Bundle,将所有重复资源转移到一个新的 Bundle。
② 右击多个 Bundles,你可以选择将所有重复资源转移到一个新的 Bundle,或者只是将它们相互之间重复的资源转移到一个新的 Bundle。
③ 你也可以直接从“资源列表”窗格中拖拽重复的资源到“Bundle 列表”窗格,将它们移进一个 Bundle。更多关于这个方法的信息,可以在下面的资源列表特性介绍中看到。 - 右击或者点击 DEL 按键来删除 Bundles。
- 拖拽 Bundles,将它们移进或者移出文件夹,或者合并它们。
- 从 Project 浏览器拖拽资源进 Bundles 来添加它们。
- 拖拽资源到空白处来创建一个新的 Bundle。
- 右击创建新的 Bundle,或者 Bundle 文件夹。
- 右击选择“Convert to Variant(转换为版本变量 Bundle)”。这将为选中的 Bundle 添加一个版本变量(默认叫“newvariant”)。已选中 Bundle 中的所有资源都将移入这个新的版本变量 Bundle。未来将会有版本变量 Bundles 间的错配检测(三思:现在已经有如果两个版本变量 Bundles 中的资源数量或者名称不相同就会报警告的检测(因为除了资源的压缩格式以外,两个版本变量 Bundles 中的资源应该完全相同))。
标准 Bundle 的图标:

场景 Bundle 的图标:

Bundle 详情
左下角的窗格展示了 Bundle 列表中选中的 Bundles 的详情。这个窗格将显示以下几个信息:
- 整个 Bundle 大小。这是磁盘上所有资源的总和。
- 当前 Bundle 依赖的 Bundles。
- 和当前 Bundle 有关的任何提示信息(错误/警告/提示信息)。
资源列表
右上角的窗格提供了 Bundle 列表中选中的 Bundles 的资源列表。可用的功能如下:
- 查看预计包含在 Bundle 中的所有资源,按照列表的头信息进行排序(有三个排序选项:资源名称/Bundle 名称/大小,手动点选)。
- 查看明确包含在 Bundle 中的所有资源,即明确被分配给 Bundle 的资源。检查器会反映 Bundle 包含的东西,并且在资源名旁边能看到 Bundle 名称。
- 查看隐式包含在 Bundle 中的所有资源。这些资源名称旁边的 Bundle 名称是 auto。如果在检查器中查看这些资源,会发现它们的 Bundle 配置是 None。
① 这些资源能被添加进 Bundle 是因为 Bundle 内有资源依赖了它们。只有没有明确配置 Bundle 的资源才会被隐式地包含进其他 Bundles。
② 注意:隐式包含列表不一定完整。已知材质、纹理不是总能显示正确。
③ 因为多个资源可以依赖相同的资源,因此一份资源被隐式包含在多个 Bundles 中是常见的。如果工具检测到了这种情况,就会将这些 Bundles 和资源都打上警告标记。
④ 为了解决重复包含的问题,你需要手动将资源移出,放入一个新的 Bundle,或者右击 Bundle,选择“Move duplicate”选项之一。 - 可以从 Project 窗口拖拽资源进这个窗格的 Bundle 上。只有以一个 Bundle 为目标,且资源类型和 Bundle 类型一致(比如将 scenes 拖拽到 scene Bundle 上),才能拖拽成功。
- 从资源列表拖拽明确或者隐式包含的资源到 Bundle 列表,将它们添加到其他不同的 Bundles 中,或者新建的一个 Bundle 中。
- 右击,或者按 DEL 键,将选中的资源从 Bundles 中移除(只是从 Bundles 中移除,不会从项目中移除)。
- 选择或者双击资源,在 Project 窗口中定位它。
当 Bundles 中包含文件夹的时候,有点需要注意。从 Project 窗口中直接拖拽一个资源文件夹到 Bundle 是可以的。当这么做之后,文件夹本身是明确包含的,而文件夹内的内容是隐式包含的。这反映了将资源分配给 Bundle 的优先级。举个例子,如果你的游戏有五个 prefabs 在 Assets/Prefabs 下,其中一个 PrefabA 是明确分配 Bundle 的,然后你拖拽 Prefabs 文件夹到 Bundle 窗格,那么 PrefabA 将自动生成一个 Bundle,其他四个 prefabs 和文件夹一起生成一个以文件夹小写名称命名的 Bundle。
资源详情
右下角窗格展示了资源列表中选中资源的详情。这个窗格不能交互,只用来显示以下可能出现的信息:
- 资源的完整路径
- 如果是隐式包含的,显示隐式包含的原因(比如:Is auto included in bundle(s) due to parent(s): TestFolder. 因为父子关系而被隐式包含)
- 如果有警告,显示警告的原因
- 如果有报错,显示报错的原因
可能的问题及解决方案
- 无法重命名或者删除一个明确的 Bundle。当你第一次将本工具添加到已存在的项目中时,这个问题偶尔会发生。你需要通过 Unity 菜单系统强制重新导入你的资源,来刷新数据。
Build 窗口使用

Build 窗口提供了基本的构建功能,让你可以开始使用 AssetsBundles。在大多数专业的使用情景下,开发者不再需要更高级的构建步骤了。如果这不能满足你的需求,你可以查看本工具构建相关的代码,并重写它们。窗口相关交互接口:
- Build Target - Bundles 将要构建到的平台。
- Output Path - 保存构建好的 Bundles 的路径。默认路径是 AssetBundles/。你可以手动编辑这个路径,或者选择“Browser”来选择路径。想要返回默认路径,点击“Reset”按钮即可。
- Clear Folders - 在构建之前,将构建路径下的文件夹的所有数据删除。
- Copy to StreamingAssets - 在构建完成后,将结果拷贝到
Assets/StreamingAssets 目录下。这在测试中可以使用,但是在产品中不起作用。 - Advanced Settings
① Compression - 在不压缩、LZMA压缩算法、LZ4压缩算法中选择一个作为压缩方式。
② Exclude Type Information - 在 AssetBundles 中不包含类型信息。
③ Force Rebuild - 在构建时重新构建需要构建的 AssetBundles。和 “Clear Folders”不同的是,在构建时不被包含的 Bundles 不会被删除。
④ Ignore Type Tree Changes - 当进行增量构建检查时,忽略类型树的变化。
⑤ Append Hash - 为 Bundle 名称添加 hash。
⑥ Strict Mode - 在构建中途,如果有任何报错,就终止构建。
⑦ Dry Run Build - 进行 dry run 构建。
⑧ Build - 开始构建。
(三思:AssetsBundles 相关内容告一段落。后面看到其他相关内容会作为补充内容加上。后面会继续翻译官方手册其他部分的内容,视重要性和难度来选择,第2.0篇再见!)
如果本文对你有帮助的话,点个赞或者评论一下吧!
下一章:【Unity3D技术文档翻译】第2.0篇 材质、着色器与纹理概述
【Unity3D技术文档翻译】第1.9篇 使用 Unity AssetBundle Browser tool (AssetBundle系列完结)的更多相关文章
- 【Unity3D技术文档翻译】第1.8篇 AssetBundles 问题及解决方法
上一章:[Unity3D技术文档翻译]第1.7篇 AssetBundles 补丁更新 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Deve ...
- 【Unity3D技术文档翻译】第1.7篇 AssetBundles 补丁更新
上一章:[Unity3D技术文档翻译]第1.6篇 使用 AssetBundle Manager 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...
- 【Unity3D技术文档翻译】第1.6篇 使用 AssetBundle Manager
上一章:[Unity3D技术文档翻译]第1.5篇 使用 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...
- 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系
上一章:[Unity3D技术文档翻译]第1.3篇 创建 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...
- 【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles
上一章:[Unity3D技术文档翻译]第1.4篇 AssetBundle 依赖关系 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Devel ...
- 【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles
上一章:[Unity3D技术文档翻译]第1.2篇 为打包 AssetBundles 准备资产 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...
- 【Unity3D技术文档翻译】第1.0篇 AssetBundles
前言 "Unity圣典"是目前对官方文档翻译比较详细的,然而文档的最新更新日期是2013年,已经远远落后最新版本,参考意义有限.官方文档.脚本手册是学习Unity3D最直接有效的途 ...
- 【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产
本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Development]→[AssetBundles]→[Preparing Assets f ...
- 【Unity3D技术文档翻译】第1.1篇 AssetBundle 工作流
译者前言:本章是关于从创建到加载,再到使用 AssetBundle 的整个流程的概述.阅读本章将对 AssetBundle 的工作流程有个简单而全面的了解. 本章原文所在章节:[Unity Manua ...
随机推荐
- Android ListView 设置单选
为 ListView 设置选中状态,需要经过如下几个步骤: 设置 ListView 的 android:choiceMode="singleChoice" 设置 ListView ...
- Angular 2 前端 http 传输 model 对象及其外键的问题
个人随笔,记录问题及思路草稿,非文章性质. 对于设备编辑场景,需要显示设备类型(外键), 前端有如下 TypeScript model(此 model 和后端实体 model 通常相对应) ...
- Java多线程异常处理
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉.这一点是通过java.lang.Run ...
- SecurityException
摘录自http://www.cnblogs.com/haorenjie/archive/2012/09/12/2682655.html public boolean checkNetwork() { ...
- html input验证只能输入数字,不能输入其他
html input验证只能输入数字,不能输入其他 此方法为借鉴别人的,在此只做记录. <input type="text" onkeyup="if(!/^\d+$ ...
- 解决vue路径中#号
在router文件夹下的js文件中,更改配置增加 mode: 'history'; vue-router官方文档:https://router.vuejs.org/zh-cn/essentials/h ...
- python_如何对迭代器进行切片操作
案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...
- AM解调的FPGA实现
一.说明: 功能:AM解调 平台:Vivado 2016.4 和 Matlab R2017a 二.原理: 1.AM解调原理 模拟电路中采用"包络检波"的方法: 数字电路中采用类似的 ...
- 零基础实现node+express个性化聊天室
本篇文章使用node+express+jquery写一个个性化聊天室,一起来get一下~(源码地址见文章末尾) 效果图 项目结构 实现功能 登录检测 系统自动提示用户状态(进入/离开) 显示在线用户 ...
- spring boot热部署
1.pom配置 参考:http://412887952-qq-com.iteye.com/blog/2300313 2.intellij配置 参考:http://blog.csdn.net/wjc47 ...