新版AssetBundle项目实际运用经验总结,不定时更新,最近刚好creator的AssetBundle出来了,研究了下官网的api中的教程,依然有许多不懂得地方,俗话说实践出真知,最近准备用一个demo集合官方的api来实际运用一下ab包和微信小游戏平台的搭配,看看新版本的ab包到底怎么用,以及使用过程中可能遇到的一些细节问题,如果有大佬已经运用在自己的项目中了,还望不吝赐教,共同进步,也可以造福社区,功德无量的事情啊
不定时更新,不定时更新,因为我自己也是处在研究阶段,还望多多包涵
-----------------------分割线2020727更新------------------------------------------------------
**
第一部分 构建assetbundle
**
经过上午的研究,和参考官方示例工程中的案例,目前大概对ab包的使用有了一个浅显的认识,在研究这一块之前,可以重点只看这两个官方的api链接中的内容
1.https://docs.cocos.com/creator/manual/zh/asset-manager/bundle.html
2.https://docs.cocos.com/creator/manual/zh/scripting/asset-bundle.html
下面是示例工程的项目结构,经过测试,本地运行、和打包微信小游戏运行,以及配置远程包运行都已经通过
文件夹目录说明
assets:----这个是我们项目的资源目录
prefab:是项目中的ui预制件的目录
res:是不需要动态加载的资源目录
resources:是项目中需要动态加载的资源目录
scene:是场景目录
Script:是脚本目录
internal:—是引擎公用的资源目录
关于项目资源的划分,每个项目有每个项目的安排,我自己的项目大体上是按照这个结构来划分的。
接下里,就要说下官网对于assetbundle优先级的解释了。按照官方的说法:
其中“从大到小”也就是数字字面的大小,11---->10—>…—>1。
所以在api的解释中,对于内置的四个assetbundle包的优先级官方设置的值是:
为什么要提到优先级?
因为合理规划优先级,能够保证资源加载的正确顺序,和减少包体的大小,如果不合理正确的规划优先级,就会出现下面这样的报错问题:

这个问题就是因为没有合理设置优先级的值,导致A资源先加载了,但是A引用的资源B还没有被加载出来,所以报错了。(在报错上面creator官方也给出了明显的提示,这挺好的)
测试工程的demo优先级,我是这么设置得:
1.internal的assetbundle引擎已经设置好了 ,不用管
2.resourece的assetbundle引擎也已经设置好了,不用管
3.prefab的优先级设置成7
4.res的优先级设置成了8(当然为了不与resources的优先级混淆你也可以设置成9)
因为prefab中的ui用到了res目录中的资源,所以res的assetbundle的优先级要高于prefab的优先级才行。



关于是否需要合并json(也就是压缩类型的选项),api中也给出了解答:
接下来就是选择构建发布项目,这里是用的微信小游戏测试的
(在打包之前,可以在模块设置中,将不需要的模块剔除掉,具体设置如下)
**
第二部分 加载(使用)assetbundle
**
在示例项目和api中已经提供了使用的方式,在本例的测试工程中,主要是实现了,从start场景跳转到游戏main场景(也就是游戏主场景),然后模拟常用的功能,比如加载ui,加载图集/sprite、加载json等等(当然这一切都是从assetbundle包中加载的)

跳转游戏主场景

具体的使用在脚本中可以找到,当然也可以参考api中的调用
https://docs.cocos.com/creator/manual/zh/scripting/asset-bundle.html
以上就是我目前对assetbundle的理解,至于远程包的使用,在构建的使用勾选远程包的选项,然后build之后,将remote整个文件夹放在阿里云服务器上面之后,删掉本地的remote,打开微信ide运行上传代码即可预览效果了。
可能有些细节方面没有注意的到,具体的最终运用,等在正式项目中使用之后,再来更新,如果有需要测试工程的,可以在下面地址下载的到





