上一章:【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. NSUserDefaults standardUserDefaults使用注意事项

    NSUserDefaults可以存储NSString,NSNumber, NSDate, NSArray, NSDictionary,自定义类可以通过NSData的方式进行存储,当然要实现NSCodi ...

  2. CCF系列之ISBN号码(201312-2)

    试题名称: ISBN号码 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规 ...

  3. 流程控制语句if、else、elif、break、continue

    1.控制流程 # if 判断语句 a = 12 if a>0: print('a大于0') if a<5: print('a大于5') else: print('哈哈哈') 2.基本形式: ...

  4. LINUX文件操作命令

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  5. redis集群主从集群搭建、sentinel(哨兵集群)配置以及Jedis 哨兵模式简要配置

    前端时间项目上为了提高平台性能,为应用添加了redis缓存,为了提高服务的可靠性,redis部署了高可用的主从缓存,主从切换使用的redis自带的sentinel集群.现在权作记录.

  6. 第一个简单的maven项目

    学习一个新的东西,最快的方式就是实践.所以我们也不用多说什么了,直接拿一个项目来练手.下面的整理取自maven权威指南,在一堆maven资料中,我觉得这本书写的最好. 简介 我们介绍一个用Maven ...

  7. 在Tomcat中实现基本的HTTP方式的验证

    .实现基本验证 (1)在C:\jakarta-tomcat-5.0.19\conf下的tomcat-users.xml文件中添加角色和用户(可以同时添加多个用户) <role rolename= ...

  8. JAVA中利用反射机制进行对象和Map相互转换的方法

    JAVA的反射机制主要作用是用来访问对象的属性.方法等等.所以,JAVA中对象和Map相互转换可以利用JAVA的反射机制来实现.例子如下: 一.对象转Map的方法 public static Map& ...

  9. Apache Shiro java安全框架

    什么是Apache Shiro? Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理功能,可为 ...

  10. android 通过getDimension,getDimensionPixelOffset和getDimensionPixelSize获取dimens.xml文件里面的变量值

    dimens.xml里写上三个变量: <dimen name="activity_vertical_margin1">16dp</dimen> <di ...