跳到主要内容
版本:v3

模块介绍

重要 注意 提醒

Coding Style wiki


基本说明

资源加载器模块,支持动态 Async 或 Sync 加载 (Dynamic Loading),采用计数管理方式进行资源管控 (支持 Resources 与 AssetBundle),如果直接使用 AssetLoaders API 进行 Load 和 Instantiate,则在 Destroy 对象时,需要连带调用 Unload (成对调用 Load & Unload)。

集成 YooAsset 实现资源热更新方案,额外实现 YooAsset 提供的加密接口,其中实现文件加解密的方式有。

  • Offset (偏移量方式)
  • OffsetXOR (偏移量 + XOR)
  • XOR
  • HT2XOR (Head-Tail 2 XOR)
  • HT2XORPlus (Head-Tail 2 XOR Plus) 强化版
  • ChaCha20
  • XXTEA
  • AES

仅供参考 (效率参考)

  • 运算效率 Offset > HT2XOR > XOR >= OffsetXOR >= HT2XORPlus > XXTEA > ChaCha20 > AES
  • 内存占用 Offset ≈ OffsetXOR > AES ≈ ChaCha20 > XXTEA > HT2XORPlus = HT2XOR = XOR
  • AB 包体积增加 Offset ≈ OffsetXOR > AES ≈ ChaCha20 > XXTEA > HT2XORPlus = HT2XOR = XOR
  • 破解难度 AES ≈ ChaCha20 > XXTEA > HT2XORPlus > HT2XOR > OffsetXOR > XOR > Offset

分组分包举例

  • 最小运行包
  • 标准运行包
  • 全部运行包 (默认索引标签为 #all)

重要 如果要使用同步加载,资源一定要是事先下载完成的 (主要是资源不在本地时,请求下载部分是异步处理),也提醒同步加载只适合小资源 (当然强烈建议全部都使用异步处理)。

注意 使用 res# 前缀,将切换成 Resources 加载方式。反之,则使用 AssetBundle。

提醒 使用 YooAsset 如有疑问时,请前往官方文档进行熟悉。


流程说明

检查 PlayMode 是否初始完成

轮询 AssetPatcher.IsInitialized() 是否完成 Preset Packages 的初始,因为初始完成后,才能开始进行 Built-in Bundle 的加载与 AssetPatcher.Check() 更新检查,又或者边玩边下载。

提醒 区分 Built-in 和 Patch (视情况自行订立运作流程)。

提醒 后续执行 AssetPatcher.Check() 检查 Patch 更新完成后,就可以读取更新资源了。

  • 执行 AssetPatcher.Check() 检查流程时,会将 Preset App Packages 与 Preset DLC Packages 进行合并下载
Preset App Packages & Preset DLC Packages
Preset_App_Pkg_01 (TotalCount = 3, TotalSize = 600 KB)
Preset_App_Pkg_02 (TotalCount = 6, TotalSize = 1200 KB)
Preset_DLC_Pkg_01 (TotalCount = 2, TotalSize = 200 KB)
Preset_DLC_Pkg_02 (TotalCount = 4, TotalSize = 400 KB)
Combination
Preset_App_Pkg_01 + Preset_App_Pkg_02 + Preset_DLC_Pkg_01 + Preset_DLC_Pkg_02 (TotalCount = 15, TotalSize = 2400 KB)

重要 通过 Preset 设置的 DLC Packages 必须是固定版号 (ex: "latest")。

是否启用 Disk Space 检查流程

检查是否更新完成

  • 判断检查 AssetPatcher.IsDone() 是否更新完成。

总结执行顺序流程

  • 轮询初始状态 AssetPatcher.IsInitialized() -> 执行检查更新 AssetPatcher.Check() -> 轮询完成状态 AssetPatcher.IsDone() -> 完成更新。