上一章:【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。它的 configurebuild 功能在新的窗口中被分为两个标签栏(最新的有三个标签栏,多了一个 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系列完结)的更多相关文章

  1. 【Unity3D技术文档翻译】第1.8篇 AssetBundles 问题及解决方法

    上一章:[Unity3D技术文档翻译]第1.7篇 AssetBundles 补丁更新 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Deve ...

  2. 【Unity3D技术文档翻译】第1.7篇 AssetBundles 补丁更新

    上一章:[Unity3D技术文档翻译]第1.6篇 使用 AssetBundle Manager 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...

  3. 【Unity3D技术文档翻译】第1.6篇 使用 AssetBundle Manager

    上一章:[Unity3D技术文档翻译]第1.5篇 使用 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  4. 【Unity3D技术文档翻译】第1.4篇 AssetBundle 依赖关系

    上一章:[Unity3D技术文档翻译]第1.3篇 创建 AssetBundles 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Develo ...

  5. 【Unity3D技术文档翻译】第1.5篇 本地使用 AssetBundles

    上一章:[Unity3D技术文档翻译]第1.4篇 AssetBundle 依赖关系 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Devel ...

  6. 【Unity3D技术文档翻译】第1.3篇 创建 AssetBundles

    上一章:[Unity3D技术文档翻译]第1.2篇 为打包 AssetBundles 准备资产 本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced ...

  7. 【Unity3D技术文档翻译】第1.0篇 AssetBundles

    前言 "Unity圣典"是目前对官方文档翻译比较详细的,然而文档的最新更新日期是2013年,已经远远落后最新版本,参考意义有限.官方文档.脚本手册是学习Unity3D最直接有效的途 ...

  8. 【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产

    本章原文所在章节:[Unity Manual]→[Working in Unity]→[Advanced Development]→[AssetBundles]→[Preparing Assets f ...

  9. 【Unity3D技术文档翻译】第1.1篇 AssetBundle 工作流

    译者前言:本章是关于从创建到加载,再到使用 AssetBundle 的整个流程的概述.阅读本章将对 AssetBundle 的工作流程有个简单而全面的了解. 本章原文所在章节:[Unity Manua ...

随机推荐

  1. Java虚拟机(JVM)以及跨平台原理详细的介绍

    相信大家已经了解到Java具有跨平台的特性,可以"一次编译,到处运行",在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的.那么,跨平台是 ...

  2. VS2010 快速写入注释小技巧

    /************************************************************************//*  *//******************* ...

  3. bzoj1433 [ZJOI2009]假期的宿舍(最大流)

    1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1717  Solved: 754[Submit][Stat ...

  4. 订制rpm包到Centos7镜像中

    本文以CentOS 7.4 最小化镜像(CentOS-7-x86_64-Minimal-1708.iso)为模版 要达到的目的: 1.订制所需的rpm软件包集成到iso文件中 2.制作完成的ISO全自 ...

  5. python——虚拟环境之virtualenvwrapper-win(windows10,64位)

    1 问题描述 当M个项目需要N个版本的python环境配置时(M>N)时,我们没有必要对每个项目都创建一个虚拟环境,只需要创建N个虚拟环境即可.这样节省了大量存储空间(特别是当M远大于N时).但 ...

  6. LeetCode 657. Robot Return to Origin

    There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its mov ...

  7. 介绍 ASP.NET Identity - ASP.NET 应用程序的成员身份认证系统

    ASP.NET Identity 是构建 ASP.NET web 应用程序的一种新的身份认证系统.ASP.NET Identity 可以让您的应用程序拥有登录功能,并可以轻松地自定义登录用户的相关数据 ...

  8. scp 一次拷贝多个文件

    用正则表达式去匹配即可, scp  *.tar  root@11.11.11.12:/root/ 拷贝当前目录下的所有tar类型的文件到服务器上

  9. Tomcat线程池实现

    目前市场上常用的开源Java Web容器有Tomcat.Resin和Jetty.其中Resin从V3.0后需要购买才能用于商业目的,而其他两种则是纯开源的.可以分别从他们的网站上下载最新的二进制包和源 ...

  10. Java中Set的contains()方法——hashCode与equals方法的约定及重写原则

    转自:http://blog.csdn.net/renfufei/article/details/14163329 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashC ...