一、资源优化
可通过转换工具配套提供的资源优化工具,将游戏内纹理资源针对webgl导出做优化。
工具入口:
工具介绍
Texture
搜索规则介绍
已开启MipMap: 搜索已开启了MipMap的纹理。
NPOT: 搜索非POT图片。
isReadable: 搜索已开启readable纹理。
MaxSize大于512: 搜素MaxSize大于512纹理。
修复规则讲解
注意: 每次修复时将当前所要修复资源的importer覆盖写入到Library/AssetImporterbak;
还原时,从Library/AssetImporterbak读取选中资源的importer设置并还原后,会删除Library/AssetImporterbak,并不是undo/redo逻辑
禁用readable:关闭readable
禁用mipmap:关闭mipmap
优化maxsize:勾选后,可选择优化maxsize的方式
改变纹理压缩格式:勾选后可修改纹理压缩格式
筛选列表结果展示
列表总览:描述资源个数和资源总内存
引用查找 选中一个资源,查找资源被引用关系
使用前后对比
修复资源前
修复资源后
可以发现资源总内存减少了很多。
二、使用Addressable Assets System进行资源按需加载
1.概述
对于Unity WebGL转换的小游戏启动耗时,资源下载通常是贡献最大的部分。这是由于手游APP往往很少针对首包资源进行特殊优化。因此,优化原则是:
首包资源量不超过5M。
资源按需延迟加载,拆分得尽量细。
2.Addressable在小游戏中的应用
2.1什么是Addressable Assets System
Addressable特点如下:
低使用门槛:使用Addressable在开发前期就进入快速开发的阶段,使用任何你喜欢的资源管理技术,你都能快速的切换来Addressable系统中,几乎不需要修改代码。
依赖管理:Addressable系统不仅仅会帮你管理、加载你指定的内容,同时它会自动管理并加载好该内容的全部依赖。在所有的依赖加载完成,你的内容彻底可用时,它才会告诉你加载完成。
内存管理:Addressable不仅仅能记载资源,同时也能卸载资源。系统自动启用引用计数,并且有一个完善的Profiler帮助你指出潜在的内存问题。
内容打包:Addressable系统自动管理了所有复杂的依赖连接,所以即使资源移动了或是重新命名了,系统依然能够高效地找到准确的依赖进行打包。当你需要将打包的资源从本地移到服务器上面,Addressable系统也能轻松做到,几乎不需要任何代价。
2.2使用WXAssetBundleProvider节省内存
WXAssetBundle可以减轻iOS的内存压力,对于使用Addressable的项目,需要替换Provider来使用WXAssetBundle。
使用方式
下载WXAssetBundleProvider.cs,放到WX-WASM-SDK-V2/Runtime/目录下。
导入插件后会有WXAssetBundleProvider.cs缺依赖的报错,需要给WX-WASM-SDK-V2/Runtime 增加 Unity.ResourceManager 的引用。
进入AA的组设置修改Provider如下
最后重新导出 AA包 和 小游戏。