控制台log输出为何频频失踪?
wxss代码为何频频失效?
wxml布局为何乱作一团?
究竟是道德的沦丧?还是人性的缺失?
让我们一起来走跑进科学
前言
当我们使用cocos开发微信小游戏时,我们经常需要使用一些资源,比如图片、音效和动画。过多的资源会导致游戏包体过大,这会给玩家带来不好的用户体验。因此,我们需要使用远程资源bundle技术来减少包体大小。
正文
1.打开cocos 进入项目在assets下新建resources目录
这个目录是默认的远程加载的目录
当然如果你还有其他目录的话也可以自己新建一个文件夹 比如我这里叫res
按图中设置一下 因为是远程资源 需要到服务器去加载 推荐使用zip压缩 如果不压缩打包的话一张张图片下载难免有抽风下载失败的概率-v-
2.在构建发布中勾选远程包与验证md5
然后资源服务器地址就填你的对象存储地址 先发布一下
扫描二维码关注公众号,回复: 15202184 查看本文章![]()
这个文件夹就是远程资源包
我们直接把这个remote扔掉对象存储上
比如我把他放到了我的对象存储的根目录下 然后回过头再去填写远程资源存放地址
随便点个文件查看详情拿一下远程资源地址 下图中蓝色选中的就是 不需要填写remote最后结尾应为/
填好了再发布一版 然后重新上传remote文件夹到对象存储
3.在游戏启动时,我们需要加载远程bundle。如果你是像我一样自定义了一个bundle目录res的话 可以像我这么写:
const { ccclass, property } = cc._decorator; @ccclass export default class NewClass extends cc.Component { @property(cc.Node) bar: cc.Node = null;//显示进度百分比 // LIFE-CYCLE CALLBACKS: // onLoad () {} start() { cc.assetManager.loadBundle('res', {//res就是我之前新建的bundle名称 onFileProgress: function (e) { _this.bar.getComponent(cc.Label).string = Math.floor(e.progress) + '%' //将百分比赋值给页面上的文本 } }, (err, bundle) => { if (err) { cc.error(err); cc.assetManager.cacheManager.clearCache(); //如果报错就重新加载 this.start() return; } }); } // update (dt) {} }
4.构建发布成功后,我们可以通过微信开发者工具来测试游戏。
导入开发者工具后 将game.json中的这四条默认值5000改长一点 这里是你 请求或下载的超时时间 有时网速慢亿点 远程包体积大亿点 就会报错网络超时 记得改一下
然后附一张加载图
总结
至此,我们完成了远程资源bundle的使用过程,减少了包体大小,使得游戏更加流畅。