在微信小游戏环境中,资源管理是最特殊的部分,它和浏览器的不同包括以下几点:
- 小游戏的主包体积不能超过 4MB,包含所有代码和资源,额外的资源必须通过网络请求下载。当包体过大时,可在 构建发布 面板配置 资源服务器地址 .。
- 对于小游戏包内资源,小游戏环境内并不是按需加载的,而是一次性加载所有包内资源,然后再启动页面。
- 不可以从远程服务器下载脚本文件。
这里引出了两个关键的问题:
-
远程资源的下载、缓存及版本管理。
-
首场景的加载速度。当主包资源放到远程服务器上时,如果要提高初始场景的加载速度,可以在构建时勾选 构建发布 面板中的 初始场景分包 选项。
除了主包体积限制外,还有多种策略可以提升游戏性能:
-
资源管理:合理分配游戏资源,使用如Cocos Creator的资源管理方案,通过wxDownloader对象实现资源的远程下载和本地缓存,以及利用md5Cache功能实现资源的自动更新。
-
使用Addressables:Unity开发中,使用Addressables来动态管理游戏资源,按需加载资源,减少首包大小,优化内存使用。
-
性能工具:利用微信小游戏提供的Android CPU Profiler等工具进行性能分析,识别性能瓶颈,优化代码执行效率。
-
代码优化:减少wasm代码文件大小,通过调整Managed strip level、使用link.xml保留关键代码、开启Strip Engine Code裁剪未使用引擎代码等方式。
-
内存优化:减少WASM代码编译内存占用,优化纹理资源使用,比如使用ASTC格式压缩纹理,取消Read/Write和Generate Mip Maps选项来减少内存占用。
-
渲染性能:减少Drawcall,使用Static Batch,合理设置LOD和可见范围,以及在支持WebGL2.0时使用GPU Instantcing来提升渲染性能。
-
逻辑和渲染加速:利用小游戏性能优化方案中的逻辑加速层与渲染加速层,将耗时的逻辑和渲染部分下沉至原生实现,提升性能。