Unity基于YooAssets资源管理1

编程入门 行业动态 更新时间:2024-10-26 20:26:33

Unity基于YooAssets<a href=https://www.elefans.com/category/jswz/34/1755980.html style=资源管理1"/>

Unity基于YooAssets资源管理1

YooAssets官方流程分析HostPlayMode(联网)模式下资源更新流程。
资源更新流程:

_machine = new StateMachine(this);_machine.AddNode<FsmPatchInit>();_machine.AddNode<FsmUpdateVersion>();_machine.AddNode<FsmUpdateManifest>();_machine.AddNode<FsmCreateDownloader>();_machine.AddNode<FsmDownloadFiles>();_machine.AddNode<FsmDownloadOver>();	_machine.AddNode<FsmClearCache>();_machine.AddNode<FsmPatchDone>();_machine.Run<FsmPatchInit>();

1.初始化[FsmPatchInit]
初始化所做的事情:
创建HostPlayModeImpl对象[实现接口IBundleServices],并执行HostPlayModeInitializationOperation初始化流程。
HostPlayModeInitializationOperation所干的事情:
a.从沙盒路径加载Manifest。
b.假如加载成功,则根据Manifest验证沙盒路径bundle的完整性。
c.假如加载Manifest失败,则先读取App内置资源的版本号[默认PatchManifest_DefaultPackage.version文件],然后根据版本号加载内置资源的Manifest,并拷贝到沙盒路径,再根据Manifest验证沙盒路径bundle的完整性。
注:校验成功的bundle,会缓存到CacheSystem中。缓存过的bundle,不会再次校验

2.版本号更新[FsmUpdateVersion]
版本号更新很简单,即使用HostPlayModeUpdatePackageVersionOperation对象从远端下载资源版本文件[PatchManifest_DefaultPackage.version],并保存 到PatchManager.Instance.PackageVersion。

3.Manifest更新[FsmUpdateManifest]
Manifest更新使用HostPlayModeUpdatePackageManifestOperation,步骤如下:
a.计算沙盒路径Manifest的md5码。
b.如果计算成功,加载Web端Manifest的md5值,保存在PatchManifest_DefaultPackage_xxxx.hash文件中[打包时会生成此文件,表示远程版本]。xxxx表示版本号,即步骤2中更新到的版本号。
c.对比本地Manifest的md5值和服务器的Manifest的md5码值。
d.如果md5码相同,则重新加载沙盒路径Manifest[步骤1中已经加载过]。
e.如果md5码不相同,则从服务器下载载Manifest,并存储到沙盒路径。
f.Manifest已经加载或者更新完成,此时根据Manifest验证沙盒目录下bundle的完整性。校验成功的缓存CacheSystem。

4.创建资源下载器[FsmCreateDownloader],此步根据自身项目需求,创建下载全部资源的下载器或者只下载固定tag的下载器。在创建下载器时会计算下载列表。在计算过程中,会先检查CacheSystem,缓存的不下载。再检查InApp的随包资源,随包资源也不下载。
注:每次生成打包资源生成bundle时,bundle都是唯一的,有改变的bundle会根据规则生成一个新的名字。因此,如果随包资源有改变时,此时也会更新下载最新资源,因为Manifest已经改变。

5.下载资源[FsmDownloadFiles]。

6.下载完毕[FsmDownloadOver],没实际内容。

7.清除多余无用的bundle[FsmClearCache]。

8.更新下载流程完毕,启动游戏逻辑[FsmPatchDone]。

以上即为基本更新流程。

思考:在常见单机游戏中,更新Manifest后,后续玩家更新bundle过程中,如果玩家网络很差甚至断网,由于新的Manifest已经更新,而bundle又不全,玩家又没网,此时不能进入游戏。
此时需要bundle完整更新后,在写入服务器Manifest,或者需要恢复本地Manifest接口。当前框架暂不支持,已联系作者支持。

更多推荐

Unity基于YooAssets资源管理1

本文发布于:2023-06-22 05:21:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/828305.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:资源管理   Unity   YooAssets

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!