最近一直在弄资源更新这块,前前后后用了一个星期,由于没有这块的经验和本身是一名小白,在做的过程中真的是很痛苦,反复的查找各种资料,看别的帖子总是理解的不是透彻,容易发生思路跑偏,不过最后终于弄出来了,实现的逻辑是参考的github上的 类似项目案例,这个帖子只是为了总结一下资源更新的大体思路
1.资源打包:
更新的资源是打成AssetBundle的(好像没毛病),也就是更新沙盒目录的AssetBundle实现游戏更新,在打包的时候有需要注意的问题,就是生成AssetBundle它会有两个对应的文件,.meta文件和.manifest文件,这块在生成的资源配置表的时候可以去过滤掉,或者直接删除,配置表的生成无非是遍历你输出的AssetBundle文件夹下的所有ab文件,取出每个文件的一些需要的信息,必须包含文件的MD5,文件相对路径,其他信息可以自行添加,MD5是为了对应资源是否发生的改变,文件的相对路径是为了下载时候的URL拼接以及在沙盒中的位置也是这个相对路径
2.资源下载(下载资源哦)
首先资源下载模块把游戏的状态分为两个,一个是第一次安装进游戏,另一个是之前进入过游戏,第一次进入游戏有一个解压资源的过程(其实就是把项目随包体的assetbundle拷贝到沙盒目录,包括扩资源的配置表信息,条件是判断沙盒中有没有资源的配置表),完事之后获取,本地的配置表和服务器的配置表,然后依照服务器的配置表取修改本地的资源(遍历本地的配置表,如果在服务器的配置表中存在,直接从服务器资源集合中删除,不存在的话吧本地的资源删除,然后集合中剩下的就是需要更新的),MD5的使用就在这,看别人的帖子总是说找出差异的资源(通过ab的名字获取MD5值然后进行比较),叫我现在的理解就是把服务器的资源列表的MD5集合与本地的MD5的集合进行比叫,根本不用管什么名字,如果本地的资源MD5在服务器上没有就说明你的这个资源已经不适用了,然后在本地删除
3.资源加载(游戏使用的资源信息提前加载)
这块的话就是在下载完之后的回调函数里面进行ab资源管理的初始化(就是通过总的Manifest文件获取到所有的ab路径信息和依赖信息,还有一个需要做的就是由一个集合去管理加载的AssetBundle,因为有些As