首页 > 框架模块 > 内置模块 > 资源 > 使用 AssetBundle 编辑工具
2017
02-22

使用 AssetBundle 编辑工具

Unity Game Framework 内置了一个 AssetBundle 编辑工具,用于编辑发布产品时所要用到的 AssetBundle 资源,并可通过 Game Framework 对资源进行更新。

首次为一个项目编辑 AssetBundle 资源,需要先编辑配置文件 Assets\GameFrameworkConfigs\AssetBundleEditor.xml。

其中:

  • SourceAssetRootPath:配置资源搜索的根目录,默认是从 Assets 开始进行全部查找,由于经常在 Assets 下放一些 Unity 插件,故也可以以某一级子目录(如 Asset/GameMain)作为根目录进行资源查找。
  • SourceAssetSearchPaths:配置资源搜索的子目录(相对于根目录的路径),每个子目录填写一行 SourceAssetSearchPath,若不填则搜索所有子目录。
  • SourceAssetUnionTypeFilter:要筛选并包含的资源类型,默认会包含场景(t:Scene)、预制体(t:Prefab)、着色器(t:Shader)、材质(t:Material)、贴图(t:Texture)、声音(t:AudioClip)、动画(t:AnimationClip t:AnimatorController)、字体(t:Font)、文本(t:TextAsset t:ScriptableObject)资源。
  • SourceAssetUnionLabelFilter:要筛选并包含的标签类型,默认会包含带有 AssetBundleInclusive 标签(l:AssetBundleInclusive)的资源。
  • SourceAssetExceptTypeFilter:要筛选并排除的资源类型,默认会排除脚本(t:Script)资源。
  • SourceAssetExceptLabelFilter:要筛选并排除的标签类型,默认会排除带有 AssetBundleExclusive 标签(l:AssetBundleExclusive)的资源。
  • AssetSorter:编辑器内资源列表排序顺序,可以是 Name(资源文件名)、Path(资源全路径)或者 Guid(资源GUID)。

注:最终筛选出的资源 = SourceAssetUnionTypeFilter 筛选出的资源 + SourceAssetUnionLabelFilter 筛选出的资源 – SourceAssetExceptTypeFilter 筛选出的资源 – SourceAssetExceptLabelFilter 筛选出的资源。

在配置文件准备好后,可使用菜单项 Game Framework -> AssetBundle Tools -> AssetBundle Editor 打开 AssetBundle 编辑工具。

使用 AssetBundle 编辑工具 - 第1张  | Game Framework

界面从左到右分为 AssetBundle 列表、AssetBundle 内容列表和 Asset 资源列表三部分。

1、AssetBundle 列表

AssetBundle列表(AssetBundle List)列出了项目中包含的所有 AssetBundle,空 AssetBundle、场景 AssetBundle 和非场景 AssetBundle 分别用三种不同的图标标识。

使用 AssetBundle 编辑工具 - 第2张  | Game Framework

功能按钮说明:

① 增加新的 AssetBundle,点击后需指定 AssetBundle 的名称(含目录名,使用“/”分隔)和变体名称(可空、根据需要使用)。
② 重命名选中的 AssetBundle。
③ 移除选中的 AssetBundle。
④ 更改 AssetBundle 的加载方式,可选择从文件加载、从内存加载,或者是从内存中解密后加载等。
⑤ 标记此 AssetBundle 是否需要随 App 一起发布,若勾选则打包时会做特殊处理。

注:若新增或重命名 AssetBundle 失败,可能是名称包含不合法字符(只能使用大小写英文字母、数字、点、中划线和下划线)或者重名(判定重名不区分大小写)。

2、AssetBundle 内容列表

AssetBundle 内容列表(AssetBundle Content)列出的当前选中的 AssetBundle 中包含的资源。若某个资源是无效的,会以黄色叹号前缀图标和资源的 GUID 显示,产生无效资源的原因一般是删除了 Asset 但没有从 AssetBundle 内容列表中移除。

使用 AssetBundle 编辑工具 - 第3张  | Game Framework

功能按钮说明:

① 选中 AssetBundle 内容列表中的所有资源。
② 取消 AssetBundle 内容列表中所有资源的选中状态。
③ 更改 AssetBundle 内容列表中的显示方式,可选择 Name(资源文件名)、Path(资源全路径)或者 Guid(资源 GUID)。
④ 将选中的资源从 AssetBundle 中移除。

3、Asset 列表

Asset 列表(Asset List)列出从指定路径下筛选出的所有资源。

使用 AssetBundle 编辑工具 - 第4张  | Game Framework

功能按钮说明:

① 将选中的一个或多个资源增加到选中的 AssetBundle 里。由于 Unity 的限制,不允许在一个 AssetBundle 中同时存放场景(*.unity)和非场景资源。
② 分别将已选中的一个或多个资源作为 AssetBundle 名来创建 AssetBundle,并将自身加入到对应的 AssetBundle 里。
③ 隐藏已经存在于 AssetBundle 中的资源,只列出尚未指定 AssetBundle 的资源。
④ 从所有的 AssetBundle 中清理无效的资源,并移除所有空的 AssetBundle。建议 Save 前总是点一下 Clean 按钮,因为构建 AssetBundle 的时候,Unity 不允许存在无效的资源或者空的 AssetBundle。
⑤ 保存当前所有 AssetBundle 和资源的状态。注意在使用此编辑工具的过程中随时保存编辑结果,若需要恢复上次编辑状态,关闭并重新打开此编辑工具即可。

最后编辑:
作者:Ellan

Game Framework 还在不断地发展,感谢大家的支持!


使用 AssetBundle 编辑工具》有 13 条评论

  1. NOW 说:

    这个AB管理和AssetBundleManager的管理方式类似, 还要更强大!

  2. NOW 说:

    Ellan可能还需要 解释一下 Working Path,Output Package Path,Output FullPath,Output Packed Path 这四个目录都有AssetBundle产生。

    • Ellan 说:

      Working Path: Unity 生成 AssetBundle 时的工作目录。
      Output Package Path: 为单机模式生成的文件,若游戏是单机游戏,生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后打包 App 即可。
      Output FullPath: 为可更新模式生成的完整文件包,若游戏是网络游戏,生成结束后应将此目录上传至 Web 服务器,供玩家下载用。
      Output Packed Path: 为可更新模式生成的文件,若游戏是网络游戏,生成结束后将此目录中对应平台的文件拷贝至 StreamingAssets 后打包 App 即可。
      注:一个 AssetBundle 是否会生成到 Package/Packed Path,取决与这个 AssetBundle 是否被标记为 Packed。

  3. Tony 说:

    楼主 你的gameframework编译版本是5.0以下的?那你的ab包管理也是4.x结构???? 我导入你的项目 提示我编译版本是5.0以下的。

  4. Tony 说:

    我现在使用的就是5.3.5版本 你的ab包管理是5.x的还是4.x的?楼主?

  5. Pingback 引用通告: 使用 AssetBundle 构建工具 | Game Framework

  6. Icarus 说:

    E神 3.0.6版本你的xml标签变了,教程更新下,还好看了下代码,差点放弃,好尴尬

留下一个回复

你的email不会被公开。