Unity转微信小游戏的版本迭代时的资源缓存过期的方案处理

最近我们的项目数据在持续的爬坡,通过调整开发新功能来进行迭代,拉升产品数据,来获得更多的流量。

图片

产品每天代表数据

图片

广告金奖励

今天给大家分享一个解决方案:

Unity+YooAssets关于新版本功能更新后,新用户使用的是"新代码+新资源",而老用户使用的却是"新代码+老资源",老用户使用的还是本地缓存的老资源,导致程序报错,无法正常启动。

我今天更新新功能“收藏室+翻倍抽奖”功能的时候就发现这个问题,我代码是新的,但是资源读取的还是本地缓存的"老资源"。

通过打印调试发现,读取的是本地的资源缓存的资源文件。

解决老用户"新代码+旧资源"问题

技术原理:微信小游戏提供了API,来让开发者根据资源路径删除单个本地缓存的资源文件,也可以全部删除所有缓存资源文件。

 /// <summary>

 /// 游戏异常时,使用本接口清理资源缓存 /// </summary> public static void CleanAllFileCache(Action<bool> action = null) {     WXSDKManagerHandler.Instance.CleanAllFileCache(action); }
 /// <summary> /// 当空间不足时,清理指定大小缓存,按文件最近访问时间排序 /// </summary> /// <param name="fileSize">需要清理的文件大小,单位bytes</param> public static void CleanFileCache(int fileSize, Action<ReleaseResult> action = null) {     WXSDKManagerHandler.Instance.CleanFileCache(fileSize, action); }
 /// <summary> /// 删除指定文件 /// </summary> /// <param name="path">需要清理的文件路径,支持完整路径,也支持StreamingAssets/filepath格式</param> public static void RemoveFile(string path, Action<bool> action = null) {     WXSDKManagerHandler.Instance.RemoveFile(path, action); }

对于大项目,资源多的项目,删除那些变动的资源文件,对于小项目,可以全部删除所有的资源文件。

大项目方案:

资源包带一个版本号+资源列表文件(资源名+MD5校验)

服务器上带一个最新的版本号+资源列表文件(资源名+MD5校验)

老用户的"新代码+旧资源"加载的时候,会读取到旧资源的版本号,与服务器固定地址的最新版本号(干脆直接带到代码里的资源版本号,这样就不用部署服务器了)进行比对,如果不一样,就比较"最新的"与"老的"资源列表文件,删除掉md5不一致的资源文件,再进入游戏,这样老用户就能使用到 "新代码+新资源"。

小项目方案:

对于一些项目,资源整体都很小,所以就可以考虑全部更新,不用做MD5比对,这样能更简单的做好这个管理。减少代码编码难度。

if (operation.Status == EOperationStatus.Succeed) {

            Debug.Log($"远端第一次获得版本为: {operation.PackageVersion}");            if (!operation.PackageVersion.Equals("2026-03-02-982")) {				Debug.Log("ClearWeChatFileCache");                SDKAdsPlugin.ClearWeChatFileCache();
                yield return new WaitForSecondsRealtime(0.5f);                package = YooAssets.GetPackage("DefaultPackage");                operation = package.UpdatePackageVersionAsync();                yield return operation;            }this.PackageVersion = operation.PackageVersion;			Debug.Log($"远端最新版本为: {operation.PackageVersion}");		}

这也是我的做法,我读取到的版本与代码带的版本进行比对,如果不同,直接调用: CleanAllFileCache,再正常的跑代码流程,这样就使用了远程的新资源下载到本地,下一次就是用本地的资源了。

END

今天的分享就到这里了,随后我们会出近期买量的数据分析与经验总结的文章,欢迎关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值