GameFrameWork如何实现预制包更新+分包更新

GameFrameWork如何实现预制包更新+分包更新

本篇可以结合前篇分包热更新来一起看

首先要知道这三个文件夹的作用

在这里插入图片描述

1.预制包

就是在更新的时候是空包的基础上+一些共用的资源或者是想提前放在包里的资源,这样可以让玩家更快的进入游戏,减少等待时间,当然刚开始下载包体的时间会相应增加,这个看自己的取舍。

2.拆解

根据E大的文档可知,单机整包用的是Package模式,并且是吧Package下面的资源拷贝到StreamingAssets下面;但我们的网络游戏,虽然刚开始使用的部分有预制包里面的资源,但是我希望后面也能更新,并且随着版本的不断迭代,预制包也会发生变化,所以我们在打包的时候需要把他勾选上Packed,这样这些资源会打到Packed Path下面,打完了ab需要把Packed Path文件夹的内容拷贝到StreamingAssets文件夹下;

然后其他需要更新的资源,只需要吧Full下面的文件夹都放到资源服务器,这样就能实现预制包+按需加载的功能了,

最后,如果是预制包的资源想更新了怎么办?那就在处理ab包的时候勾选上packed,这样他就会被打包Packed文件夹下面,下次更新整包的时候可以更新这个基础资源,再把Full文件夹放到资源服务器,就可以实现对预制包的更新(前提是预制包有变化,不然他不会更新,因为会检测文件是否有变化,单纯换位置,他是不会更新的)。如果单纯想不换包实现对预制ab的更新,就会校验本地资源和远端资源,只要有新的资源会优先使用远端资源。

综上,实现了对预制包+分包的功能。

3.代码逻辑

在这里插入图片描述

主要是检测这里的逻辑,他会检测本地是否有对应的资源,每个检测都有自己的成功和失败的回调。

在这里插入图片描述

主要是这俩个文件记录了远端服务器上的文件地址和本地packed的文件地址,如果本地和服务器上的一致,就是用本地的资源,如果不一致就使用远端的,这样就实现了对预制资源的更新。

4.更新情况

1.预制资源有变动,会直接更新对应的ab包到本地持久化文件夹;

2.预制资源变成非预制资源,会更新到本地持久化文件夹;

3.非预制资源变成预制资源,也就是勾选了Packed,这时候他会被打入Full文件夹,如果这个时候不换新包,那么他就会从远端的资源服务器下载到本地;如果是替换安装包,那么他会使用本地的文件。

Ps:当然每个人的情况不一样,有的业务逻辑需要修改对应的代码才能实现,这里只是说下原理。不过这三种情况在PC和安卓端的分包逻辑的前提下均已验证,请放心食用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值