周末的时候在家看了下去年的Unite16 LA的视频。其中一个session颇有趣,是AssetBundles开发团队Reichert的一个“总结过往,畅想将来”的名为《Future of Asset Bundles》的session 。
html
简而言之是过去的AssetBundles有不少问题,之后AssetBundles的API可能又会有一些很大的变化。固然,一个好消息是unity显然和微软同样,这两年已经意识到啦开源的意义 一部分代码(高层c#部分的代码)在GitHub上已经开源:
AssetBundles-Browser
AssetBundles-BuildPipeline
在开源社区内经过高频度的交流反馈推动项目的进度,而不是花几个月时间捂出来一个实验室里的怪胎,显然前者让人更有信心。
不过本文想要聊到主要内容并不是AssetBundle,而是一个辅助工具——AssetBundles-Browser。git
在这个session 中Reichert总结了若干过去AssetBundle的不足,抛开各类各类和性能或底层机制相关的不足不谈,我很认同的一点就是Editor内AssetBundle工具的缺位。
固然,Reichert罗列的问题还不止这些,他们甚至还组建了新的Asset Bundle & Build Pipelin团队来处理解决这些已有的问题同时开发新的功能。其中固然包括了为咱们这些开发者提供更多的Editor工具来处理AssetBundle的相关问题。github
这其中包括一个叫作AssetBundles-Browser的工具,我感受仍是挺实用,所以在此和你们分享一下。算法
虽然AssetBundles-Browser是unity开发的一个工具,可是并无包括在正式发布的Unity版本中。若是想要使用则必须保证Unity的版本在5.6+,而且去GitHub获取相应的脚本:
AssetBundles-Browser编程
以后将获取的项目内的Editor文件夹拷贝到咱们已有的项目中,就能够在Editor的Window菜单栏里找到AssetBundle Browser了。
由于个人示例项目内没有Assetbundles,所以AssetBundle Browser窗口内空空如也。(场景以及模型资源来自:Japanese Matsuri City)c#
此时咱们既能够像以往同样设置目标资源的Asset Labels,也能够直接将资源拖拽到AssetBundle Browser的Bundle列表区域。
例如,我能够直接将场景文件sample拖到AssetBundle Browser的Bundle列表区域。这样一个Bundle就建立好了,它的Asset Labels也会被自动设置。在AssetBundle Browser的右侧——Asset列表区域罗列了这个Bundle所包含的Asset。session
咱们能够很方便的定位目标Asset或者是按照体积对Asset进行排序,甚至检视是否有一些问题发生,好比某个资源是否被重复打包了。编辑器
因此接下来咱们能够再次向Bundle列表区域拖拽一个须要被制做成Bundle的资源。此次咱们发现,在Bundle列表和Asset列表都出现了一个黄色的提示——有四个资源被重复打包了。ide
那么怎么处理这种被重复引用的资源呢?我想各位在制做本身的AssetBundles时确定都有各类各样的策略,不过在AssetBundle Browser中处理这种依赖问题却很简单——无非是被重复引用的资源单独打包——建立一个新的Bundle用来存放那些重复引用的资源。工具
固然,除了能往Bundle列表中拖拽来建立新的Bundle,那么咱们可否直接在Asset列表中操做Bundle内的Asset呢?这一样是能够的。咱们既能够直接将别的Asset拖入到某个Bundle内,也能够直接删除某个Bundle内的Asset。
当AssetBundle的内容设置完成以后,咱们就能够构建咱们的Bundle文件了。我相信以前你们也是经过拓展编辑器来调用相应的BuildPipline的代码来构建Bundle文件,可是有了AssetBundle Browser以后,咱们能够很方便的在AssetBundle Browser的窗口内构建Bundle文件。
勾选适合本身使用的选项,选择适合本身的压缩算法均可以实现。
以后,咱们就能看到生成的AssetBundles文件了。
是否是比以前方便了不少?
【1】AssetBundles-Browser Manual
slide能够到这里到这里下载:UniteLA-AssetBundles.pdf
各位若是以为有趣的话,欢迎点个赞。
-华丽的分割线-
最后打个广告,欢迎支持个人书《Unity 3D脚本编程》
欢迎你们关注个人公众号慕容的游戏编程:chenjd01