弄了个简单却很完整的资源热更新模板:感觉网上针对5.0以后打包的东西太少了,很多人找了半天还是5.0以前的,要么就是绕来绕去不绕死你的秀技巧的框架。
现在Vinici基于Unity5.4弄了一个例子供参考,代码的加载模块没有做,这块感觉变数太大,还是自己根据项目需求来做比较好,道理也是一样的,用lua的话就加载lua文本,至于后面你要怎么用,看自己了,那些热更新框架为什么大?就是把很多代码更新要遇到的情况一股脑列出来了,要是我写全了估计也没人有心思看下去,今晚开始写下来,也方便自己以后记忆。

总体流程:

1、将要打包的资源放在一个目录下,我图方便就放在了Resources下,为什么这么做呢?因为开发时你不可能一直LoadAB包吧,所以我留了两个接口,开发平台是用Resources加载,发布时用Load AB包的方式加载。

打包时根据每个文件起对应的AB名字,记录下MD5值和大小(以后更新时可直接获取要更新的包的大小,少一次计算大小的操作何乐不为!?)我是用逗号分隔符,保存为CSV文件(微软的做东西确实好),好处是便于看也便于改啊!

2、启动游戏前,刷新所有文件夹,一样的规则生成MD5和大小,与服务器上的版本文件对比,当有比较不同时,记录下文件名,比较完成后,下载对应替换服务器文件,跳转场景。
3、对于运行时加载服务器AB资源,本打算开线程监听加载请求在去下载的,但是unity很坑爹,这个是后话,换成自带的IEnumerator 。

思路是:有一个文件加载请求队列,监听这个队列,当队列中有下载的文件时请求时,去下载或加载,加载完成移出队列,加载下一个,直到加载完,目前由于用的5.0以后AB资源是分开的,加载请求的依赖关系难以判断是是否重复,所以只做了单线程加载,原因是Unity的同一个AB资源在内存里只能有一个!!

4、然后实例化出后,卸载掉内存里的AB包资源。

整体思路如上,其中还有很多细节和重点,源码的话我后期会贴出来

今晚码这么多字警告自己再也不接操蛋的外包~~