项目复盘: cocos-creator合成大西瓜游戏实现资源分离,部署CDN

不要轻易说不行,提出问题,想办法解决问题

后期验收的时候,客户要求制作精良震撼的烟花效果图,设计甩来了10M的动画帧图集。我当时就抱怨图太大,严重拖垮项目。而理智告诉我,遇到问题,正是我们增长智慧的时候。于是我想到了CDN缓存图片。
因为cocos-creator集合了打包流程,可以让新手傻瓜式编译成程序文件,但是也让新手感到困惑,不知道该怎么缓存图片。所有的预制体,所有的图片,我们在cocos-creator编辑器里面都是在本地拖拽使用的。按照之前的做法是要把图片文件放在CDN服务器上,再通过绝对路径去获取回来。但是cocos-creator编辑器里把路径引用,实例化Node节点等操作全部可视化了。看起来似乎是没有办法CDN缓存图片。于是我开始研究文档和查看其他人的经验。比较有帮助的是:

解决思路: 在编辑器打包好之后的文件中,找到main.js入口文件的cc.assetManager.loadBundle方法,进行路径拼接。贴关键代码:


    var count = 0;
    var remote_url = "https://yourServer/daxigua/202107/assets/"; // 打包后的assets文件放入CDN服务器的地址
    function cb (err) {
        if (err) return console.error(err.message, err.stack);
        count++;
        if (count === bundleRoot.length + 1) { // 加载到最后一项资源后,cc.game.run启动游戏进程
            cc.assetManager.loadBundle(remote_url + MAIN, function (err) {
                if (!err) cc.game.run(option, onStart);
            });
        }
    }

    cc.assetManager.loadScript(settings.jsList.map(function (x) { return 'src/' + x;}), cb);

    for (var i = 0; i < bundleRoot.length; i++) {  // 如果编辑器上只有assets一个文件夹,bundleRoot[i]就是assets
        cc.assetManager.loadBundle(remote_url + bundleRoot[i], cb);
    }

  • 方法解释: 这个方法是将所有编辑器里,我们放在assets文件夹里的资源进行打包,也就是说我们
    CDN上是放打包编译后的assets文件夹,里面存放了图片,js文件,json文件等。

小插曲:运维部署好我的assets文件夹后,获取资源显示跨域。因为我们是不同域,后来代理设置为允许我们测试域名通过get方式获取资源,图片资源可以访问了,但是js和json资源不能访问,后来开启这些文件格式也允许访问的配置,所有资源都可以加载了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值