ResourcesLoading.md 2.7 KB
Newer Older
N
nebulaliu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
# 资源按需加载概述

​		区别于原生 APP 游戏很少考虑场景内的资源规划问题,开发时通常将资源在游戏启动时全加载到内存中,而小游戏需要做到“即点即玩”,影响游戏的呈现速度因素中如首资源包的下载往往占比较大,因此需要根据场景中的主次内容进行资源上的优化分包处理。

​		目前分包将基于 AA/AB 包的按需加载,以及 Unity Instant Game 三种方案。值得注意的是,微信小游戏环境中**不支持对本地的 Bundle 进行加载**,因此无论哪种方案最终都采用上传 CDN 方式在游戏运行时异步按需下载。

#### AA包、AB包、Instant Game 方案选择说明

> 相关手册:[AA(Addressable) 进行资源按需加载](UsingAddressable.md) 、 [AB(AssetBundle)进行资源按需加载](UsingAssetBundle.md) 、[Instant Game 实践指南](InstantGameGuide.md)

​		AA/AB 包是常规的分包解决方案,关于他们的选择对于轻度游戏来说两者没有特别要求,倒是功能强大的 AA包 使用门槛更低一些,而对于重度游戏,平台目前所反馈到的结论是使用 **AB包** 的性能要比 AA包 更好,AA包较大项目时生成的未压缩的 catalog 较大,加载效率低,改用 AB包后,效果提升明显。

​		Instant Game 是由 Unity 官方提供的自动加载方案,有关 Instant Game 详细内容可查阅 **Instant Game 实践指南**,本节说明三种方案的差异:

|                | 常规资源加载方案(AA/AB包) | Instant Game 工具              |
| -------------- | --------------------------- | ------------------------------ |
| 技术原理       | 基于 AA/AB 包的异步资源管理 | Unity引擎底层资源异步加载策略  |
| 引擎版本       | 不限制                      | 目前需指定版本 2021.2.5        |
| 转化人力       | 适中                        | 较少/适中                      |
| 懒加载资源类型 | 常见纹理资源                | 纹理、模型、骨骼动画、音频资源 |
| 自选CDN        | 支持                        | 不支持(需使用腾讯云CDN服务)  |
| 必要的代码修改 | 通常需要适配                | 较少/达到最佳仍需要            |
| 首资源包处理   | 通常需要适配                | 默认不需要/达到最佳仍需要      |

**选择建议:**

- 游戏工程本身已采用完善的 AA/AB 资源管理,建议继续沿用常规资源加载方案,且有助于后续压缩纹理等优化工作的进行有效提升游戏运行性能;
- 原生 APP 版本游戏完全没有做资源的拆包,希望减少游戏的转化周期,使用 Instant Game 方案可以快速完成转化工作。



###