热更(新)本质上是从处事器下载需要的资源到当地,而且可以执行新的游戏逻辑,让新资源可以被游戏所利用,它可以使开拓者在不宣布新版本的环境下,修复 BUG 和宣布成果,让开拓者得以绕开苹果的审核机制,制止长时间的审核期待以及多次被拒造成的本钱。
Cocos 默认的热更新机制并不是基于补丁包更新的机制,传统的热更新常常对多个版本之间别离生成补丁包,按顺序下载补丁包并更新到最新版本。Cocos 的热更新机制通过直接较量最新版本和当地版本的差别来生成差别列表并更新。
cocos热更概述 manifest相识cocos热更之前,先要相识manifest。在cocos中,manifest是一种文件名目,其对应的文件简称资源描写文件,是用来描写当地或长途包括的资源列表及资源版本。
manifest名目是模拟json名目,其要害字段的寄义如下 :
{ "packageUrl" : 长途资源的当地缓存根路径 "remoteVersionUrl" : [可选项] 长途版本文件的路径,用来判定处事器端是否有新版本的资源 "remoteManifestUrl" : 长途资源 Manifest 文件的路径,包括版本信息以及所有资源信息 "version" : 资源的版本 "engineVersion" : 引擎版本 "assets" : 所有资源列表 "key" : 资源的相对路径(相对付资源根目次) "md5" : md5 值代表资源文件的版本信息 "compressed" : [可选项] 假如值为 true,文件被下载后会自动被解压,今朝仅支持 zip 压缩名目 "size" : [可选项] 文件的字节尺寸,用于快速获取进度信息 "searchPaths" : 需要添加到 FileUtils 中的搜索路径列表 }
Manifest 文件可以通过 Cocos Creator 热更新典型中的 Version Generator剧本 来自动生成。
工程资源和游戏包内资源的区别各人在建设一个 Cocos Creator 工程的时候,可以看到它的目次下有 assets 目次,内里生存了你的场景、剧本、prefab 等,对应编辑器中的 assets 面板。可是这些工程资源并不等同于打包后的资源,在利用构建面板构建原生版本时,我们会在构建目次下找到 res 和 src 文件夹,这两个文件夹内生存的才是真正让游戏运行起来的游戏包内资源。个中 src 包括所有剧本,res 包括所有资源。
所以我们的资源热更新自然应该更新构建出来的资源,而不是工程的 assets 目次。
在creator2.4.3中,重构了资源打点模块,回收bundle模块化打点资源。这里分享一个通过uuid来获取资源路径的API
cc.assetmanager.utils.getUrlWithUuid //转换 uuid 为 url,这里返回的url是运行时游戏包内的资源路径
searchPaths搜索路径在谈到热更之前,关于searchPaths的观念,有须要先相识一下。在大大都的时候,我们描写一个文件的路径,城市基于一个”根目次“去给到对应的”相对路径“,并不会直接写死成”绝对路径“,这样更利于维护、迁移。在游戏开拓中,其实我们”根目次“也是很难担保其确定性、独一性。就拿热更成果而言,我们有一个图片,假设其对应bundle目次(默认是resources)的相对路径是 ”./png/icon1.png“,当我们游戏版本更新,需要更新该图片的时候,由于包内的资源是不行写的,那我们只能让其从别的一个处所读取到新的图片,为了担保代码的一致性,假如我们可以改变其对应的”根目次“,那代码中之前的相对路径都不需要修改,就能找到新的图片。
在creator中,其维护勒一套搜索路径的计策。对应的API可以查阅jsb.fileUtils.getSearchPaths、jsb.fileUtils.fullPathForFilename等。这里简述其道理。FileUtils中生存勒一个”根目次“数组,index越低的优先级越高,在查找资源的时候,我们假如指定的是”相对路径“,则其会凭据searchPaths内里的”根目次“的优先级,去拼接成”绝对路径“去查找资源,假如路径有效,找到勒文件,则会遏制继承寻找。
在游戏包的安装目次,必定有一个目次是存放我们打包后的各类剧本、资源,我们这里称之为”游戏包目次“,在热更逻辑中,我们需要指定一个”热更目次“来存放我们热更的内容,这两个目次都应该设为搜索路径,而且需要节制版本,使优先级更高的目次,对应的搜索路径优先级也要越高,这样,我们才气找到最新的文件。一般而言,”热更目次“的优先级需要高于”游戏包目次“。
cocos的基本热更流程这是cocos官网资料的流程图,留意,当前流程是用户安装好 app 后,第一次查抄随处事端的版本更新的环境,完整的热更流程会更为巨大一些,后头我们再逐步增补。
本文主要辅佐各人领略热更自己的流程逻辑,其各个细节,如断点续传、下载进度、并发下载、错误检测、解压缩、错误规复等细节问题,暂不接头。所以,把上诉流程图,可简朴轮廓为: