抖音开放平台Logo
控制台

小游戏资源缓存

更新时间 2024-07-24 02:58:49
收藏
我的收藏

一.概述​

对于UnityWebGL小游戏而言,资源主要分为两种,首包资源需要远程下载的(远程资源)
    首包资源(包含首包资源和代码文件,将常驻在缓存里)​
    包含StreamingAssets文件夹和webgl.data文件​
    wasm代码文件​
    远程资源(远程bundle包的缓存)​
    存放在cdn上的bundle包​

二.资源缓存流程​

UnityWebGL是运行在类浏览器环境中,对于文件加载,文件缓存,默认是通过IndexedDB来实现。​
基于性能、灵活性的考虑,重写了这部分逻辑,绕过了浏览器,将这部分在iOS/Android原生中重新做了实现。现在对于文件加载,缓存均是一次对磁盘读取、写入的操作。​

2.1 缓存触发场景​

任何对于文件的读取,不管是本地还是远程都必须经过WebRequest发起网络请求。​
我们重写了网络请求相关部分代码,现在对于所有的网络请求都将触发缓存策略。​
常用的为:​
    Addressables/AssetBundle,远程加载相关​
    UnityWebRequest相关​

2.2 缓存流程​

主要缓存策略如下:​
几个重要的点:​
    对于C#层,无需关心后续缓存逻辑,按照没有缓存的前提写,会自动走缓存文件读取的逻辑​
    对于首次下载的资源iOS/Android层会按照命名规则将资源命名,并保存在本地。​

三.缓存规则​

我们重写了UnityWebgl方案的文件系统,对于Application.persistentDataPath等C#的路径,重新映射成iOS原生/Android原生的某个文件路径。​
对于文件缓存策略和磁盘清理规则可以参考目录说明与缓存策略