CocosCreator小游戏项目的远程资源管理总结

现在微信小游戏的项目资源包大小已经由4M改成了8M,为的就是适应小游戏越来越丰富的玩法。

但是,就算有8M也是不足以做大部分游戏的,因为项目中的图片资源就有很多了,绝大部分游戏的资源(除了代码)都在10M以上。

所以对于CocosCreator要打包成小游戏的项目,我们都会统一把资源放在资源服务器上面。

这样,我们可以在小游戏开始运行的时候,只加载游戏的代码文件,而对于资源文件,就可以在加载完代码文件后,慢慢来加载。

这样做有三个好处:

  1. 避开小游戏项目资源大小不能超过8M的限制
  2. 避开不可以从远程服务器下载脚本文件的限制
  3. 可以进行动态加载,避免游戏初次运行时需要加载过多的文件而导致的卡顿

对于以上的第3点,就算不是因为小游戏资源包大小的限制,绝大多数游戏也是需要采取这样的游戏优化策略,所以我们应当把资源放到服务器上。

对于上面的总结,我在之前想到一个问题:

就是CocosCreator中对于Prefab的引用有动态加载的和静态加载(编辑界面拖拽)的这两种。

而对于静态加载的已经在脚本中绑定,这样预制体加载(意味着脚本也加载了)的时候可能资源还没有加载,这样脚本会不会不能成功绑定资源?

对于这个问题,我后来发现了Creator官网上说的一句:

对于小游戏包内资源,小游戏环境并不是按需加载的,而是一次性加载所有包内资源,然后再启动页面。

这样,就意味着,脚本加载了的同时,资源肯定也是加载了的,所以问题就可以解决。

下面,引用官网上的一段文字,对远程资源的管理讲解得比较简洁明了:

在小游戏环境中,我们提供了一个 wxDownloader 对象,给它设置了 REMOTE_SERVER_ROOT 属性后,引擎下载资源的逻辑就变成:

  1. 检查资源是否在小游戏包内
  2. 不存在则查询本地缓存资源
  3. 如果没有缓存就从远程服务器下载
  4. 下载后保存到小游戏应用缓存内供再次访问时使用

同时,当开启引擎的 md5Cache 功能后,文件的 url 会随着文件内容的改变而改变,这样当游戏发布新版本后,旧版本的资源在缓存中就自然失效了,只能从服务器请求新的资源,也就达到了版本控制的效果。

具体来说,开发者需要做的是:

  1. 构建时,勾选 md5Cache 功能。
  2. 将小游戏发布包中的 res 文件夹完整的上传到服务器。
  3. 删除发布包内的 res 文件夹。
  4. 在构建发布面板中设置 远程服务地址
  5. 对于测试阶段来说,可能你无法部署到正式服务器上,需要用本地服务器来测试,那么请在微信开发者工具中打开详情页面,勾选项目设置中的 不检验安全域名、TLS 版本以及 HTTPS 证书 选项。

猜你喜欢

转载自blog.csdn.net/u013654125/article/details/81082236