0x00 前言

周末的时候在家看了下去年的Unite16 LA的视频。其中一个session很有趣,是AssetBundles开发团队Reichert的一个“总结过往,畅想未来”的名为《Future of Asset Bundles》的session 。

简而言之是过去的AssetBundles有很多问题,以后AssetBundles的API可能又会有一些很大的变化。当然,一个好消息是unity显然和微软一样,这两年已经意识到啦开源的意义 一部分代码(高层c#部分的代码)在GitHub上已经开源:
AssetBundles-Browser
AssetBundles-BuildPipeline
在开源社区内通过高频度的交流反馈推进项目的进度,而不是花几个月时间捂出来一个实验室里的怪胎,显然前者让人更有信心。
不过本文想要聊到主要内容并非AssetBundle,而是一个辅助工具——AssetBundles-Browser。

0x01 过去的不足

在这个session 中Reichert总结了若干过去AssetBundle的不足,抛开各种各种和性能或底层机制相关的不足不谈,我很认同的一点就是Editor内AssetBundle工具的缺位。

当然,Reichert罗列的问题还不止这些,他们甚至还组建了新的Asset Bundle & Build Pipelin团队来处理解决这些已有的问题同时开发新的功能。其中当然包括了为我们这些开发者提供更多的Editor工具来处理AssetBundle的相关问题。


这其中包括一个叫做AssetBundles-Browser的工具,我感觉还是挺实用,因此在此和大家分享一下。

0x02 AssetBundles-Browser


虽然AssetBundles-Browser是unity开发的一个工具,但是并没有包括在正式发布的Unity版本中。如果想要使用则必须保证Unity的版本在5.6+,并且去GitHub获取相应的脚本:
AssetBundles-Browser

之后将获取的项目内的Editor文件夹拷贝到我们已有的项目中,就可以在Editor的Window菜单栏里找到AssetBundle Browser了。
因为我的示例项目内没有Assetbundles,因此AssetBundle Browser窗口内空空如也。(场景以及模型资源来自:Japanese Matsuri City

此时我们既可以像以往一样设置目标资源的Asset Labels,也可以直接将资源拖拽到AssetBundle Browser的Bundle列表区域。
例如,我可以直接将场景文件sample拖到AssetBundle Browser的Bundle列表区域。这样一个Bundle就创建好了,它的Asset Labels也会被自动设置。在AssetBundle Browser的右侧——Asset列表区域罗列了这个Bundle所包含的Asset。

我们可以很方便的定位目标Asset或者是按照体积对Asset进行排序,甚至检视是否有一些问题发生,比如某个资源是否被重复打包了。

所以接下来我们可以再次向Bundle列表区域拖拽一个需要被制作成Bundle的资源。这次我们发现,在Bundle列表和Asset列表都出现了一个黄色的提示——有四个资源被重复打包了。


那么怎么处理这种被重复引用的资源呢?我想各位在制作自己的AssetBundles时肯定都有各种各样的策略,不过在AssetBundle Browser中处理这种依赖问题却很简单——无非是被重复引用的资源单独打包——创建一个新的Bundle用来存放那些重复引用的资源。

当然,除了能往Bundle列表中拖拽来创建新的Bundle,那么我们能否直接在Asset列表中操作Bundle内的Asset呢?这同样是可以的。我们既可以直接将别的Asset拖入到某个Bundle内,也可以直接删除某个Bundle内的Asset。

0x03 Build

当AssetBundle的内容设置完成之后,我们就可以构建我们的Bundle文件了。我相信之前大家也是通过拓展编辑器来调用相应的BuildPipline的代码来构建Bundle文件,但是有了AssetBundle Browser之后,我们可以很方便的在AssetBundle Browser的窗口内构建Bundle文件。

勾选适合自己使用的选项,选择适合自己的压缩算法都可以实现。
之后,我们就能看到生成的AssetBundles文件了。

是不是比之前方便了很多?

ref:

【1】AssetBundles-Browser Manual

slide可以到这里到这里下载:UniteLA-AssetBundles.pdf
各位如果觉得有趣的话,欢迎点个赞。

-华丽的分割线-
最后打个广告,欢迎支持我的书《Unity 3D脚本编程》

欢迎大家关注我的公众号慕容的游戏编程:chenjd01

进击的AssetBundles和它的工具们的更多相关文章

  1. 进击的新版NavMesh系统:看我飞檐走壁

    0x00 前言 unity5.6作为Unity5最后的一个版本,的确起到了一个承上启下的作用.除了上一篇文章<进击的AssetBundles和它的工具们>中提到的AssetBundles- ...

  2. 【Unity游戏开发】AssetBundle杂记--AssetBundle的二三事

    一.简介 马三在公司大部分时间做的都是游戏业务逻辑和编辑器工具等相关工作,因此对Unity AssetBundle这块的知识点并不是很熟悉,自己也是有打算想了解并熟悉一下AssetBundle,掌握一 ...

  3. 动态生成navmeshi-进击的新版NavMesh系统:看我飞檐走壁

    http://forum.china.unity3d.com/thread-25421-1-1.html0x00 前言 unity5.6作为Unity5最后的一个版本,的确起到了一个承上启下的作用.除 ...

  4. Assetbundles

    Unity5.4 Assetbundles官方说明 http://iq007.blog.163.com/blog/static/265542019201681264813653?suggestedre ...

  5. Unity AssetBundles and Resources指引 (三) AssetBundle基础

    本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...

  6. Unity AssetBundles and Resources指引 (二) Resources文件夹

    本文内容主要翻译自下面这篇文章 https://unity3d.com/cn/learn/tutorials/topics/best-practices/guide-assetbundles-and- ...

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

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

  8. Unity 5 官方打包管理工具 Asset Bundle Manager

    http://blog.csdn.net/suifcd/article/details/51570003 Unity5在Asset bundle 打包管理上采用了全新的方式,不需要再对每个文件进行MD ...

  9. 进击的.NET 在云原生时代的蜕变

    你一定看过这篇文章 <进击的 Java ,云原生时代的蜕变>,  本篇文章的灵感来自于这篇文章.明天就将正式发布.NET Core 3.0, 所以写下这篇文章让大家全面认识.NET Cor ...

随机推荐

  1. 纯CSS3实现loading正在加载。。。

    场景分析:随着我司专职前端切图人员离职,切图的活重新落到我们小组团队成员的日常任务list里面,加上我们小组 7个前端 基本都是后台转的前端 (赶鸭子上架 前端现在需求量大 没办法) 加上自己也将就一 ...

  2. C# 特性参数(注解属性加在参数前面)

    特性参数 webapi 框架里有很多特性参数,为了解除一些新人的疑惑,写个小例子分享下. class Program { static void Main(string[] args) { var m ...

  3. superagent和request结果转换区别

    superagent和request结果转换区别 使用superagent和request抓取页面内容时,两个抓取内容都可以被cheerio进行处理.但处理时有个细微差别. 1. 使用superage ...

  4. 38. Count and Say - Unsolved

    https://leetcode.com/problems/count-and-say/#/description The count-and-say sequence is the sequence ...

  5. kali高速更新源以及主题修改方法

    文章不小心删了~这是我以前写的文章了了.实用性较强,所以现在补回来! 安装完kali之后,需要对软件进行一次整体更新:apt-get update & apt-get upgrade 但是,先 ...

  6. java 中变量存储位置的区别

    1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.  2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字 ...

  7. [1] [转]软件架构之三层架构和MVC的关系

    注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了.因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联 ...

  8. Scrapyd部署爬虫

    Scrapyd部署爬虫 准备工作 安装scrapyd: pip install scrapyd 安装scrapyd-client : pip install scrapyd-client 安装curl ...

  9. Android Studio常用快捷键使用

    以下是我在编程中实际用上的Android Studio快捷键,基于Windows系统,在使用过程中会不断添加不断完善,OSX版本的在另外一篇博客 Ctrl+Alt+L 格式化代码,编写完成项目来一下, ...

  10. 由SpringMVC中RequetContextListener说起

    零.引言 RequetContextListener从名字结尾Listener来看就知道属于监听器. 所谓监听器就是监听某种动作,在其开始(初始化)和结束(销毁)的时候进行某些操作. 由此可以猜测:该 ...