AssetBundle热更新资源策略

习惯性前言

AB包更新网上资料很多,可惜只能入门,没什么实战用处,资源热更之前也搞了我好几天,趁着有时间分享下。

需要的几个辅助文件

1. Newtonsoft的json解析库,我目前觉得最好用的。

2. AssetBundleBrowser包,百度了解并下载,直接放到assets下,用于在编辑器中进行打包。

3. 我用的unity2017,mac环境。

首先知道什么是AB热更

游戏在一开始运行的时候,通过一个文件里面记录的版本号,比如txt文件,和服务器上的文件中的版本号进行比对,如果本地版本号低,下载对应ab包到沙盒路径,并对本地资源进行替换,这样游戏在进入游戏场景中加载的就是新下载的ab包的资源。

需要明确两点,热更的物体上绑定的代码不会执行,第二,shader代码不会执行。有人说第一种情况,如果本地存在代码是可以执行的,但是我实验后不可以,所以,我在实际项目中所有的资源都是动态加载和动态绑定。

我推荐下siri的AB包教程,入门还可以,一两个小时就看完了,不花什么时间。

学习路线

unity基础-》unity的特殊文件夹-》unity的文件拷贝,下载,读写-》c#的基础文件操作-》AB包相关,比如什么加载

实际项目中的操作思路

1. 确定将什么资源(物体、组件、模型、图片)做成预设,如果你倒入了AssetBundleBrowser包,那么你可以在编辑器的右下角对预设进行ab的命名,进行统一的归类,当然这种细节可以去看看教程或者百度。

2. 生成需要平台的ab包

3. 编写版本文件,我的思路每个平台的ab包都要有一个对应的版本文件,比如pc_version, android_version,  我以一个txt为例。

AssetBundle热更新资源策略_第1张图片
示例

version代表整个文件的版本,只要这个文件有更新,就提高一个版本。小数点前代表大版本,如果变化了就要下载新的apk,小数点后面代表小版本,直接热更。

abList就是所有放在服务器的ab包的列表,其中的每一个对象就是一个ab包的描述,其中url就是这个ab包位于服务器中的下载位置。

4. 本地拷贝

将目标平台的ab包和版本描述文件放到Unity的StreamingAssets(后文称为SA路径)文件夹中,写个程序,在程序运行时通过version文件判断沙盒路径中是否有SA路径中的文件,如果缺少,就拷贝过去。

5. 沙盒文件和远程服务器文件对比下载。

6. 游戏运行动态加载。

AB热更核心代码链接:

链接:http://pan.baidu.com/s/1b02Sqi  密码:2bso

你可能感兴趣的:(AssetBundle热更新资源策略)