【步兵 cocos2dx】lua的热更新 By EOS.
之前写好的热更,基本可以在项目中使用,接下来拿出来跟大家分享一下。
话不多说,直接进入正题。。。总感觉两行长度差太多不舒服,现在好了。
lua的热更新
因为lua脚本的独立性和模块管理的灵活性,所以我们可以在程序不重新启动的情况下,
来卸载和重新加载lua脚本,但是因为独立,所以可以在任何结点进行重新加载,
但由于全局表本身和资源可能引发各种各样的问题,所以一般在程序的一开始今人热更新。
省去很多麻烦,当然如果提示性的下载再重新加载也是没有问题的,
前提是能够兼容用户不更新情况下,还保持游戏的一致性(基本上就是只更新资源了)。
核心代码:
--先卸载
package.loaded[MODEL_NAME] = nil
--cocos路径缓存,记得清,不然直接返回缓存路径
cc.FileUtils:getInstance():purgeCachedEntries()
--重新加载
require MODEL_NAME
顺带一题:lua脚本也是资源的一部分,从使用时候的文件路径也可以看出来,
和图片音频是同级的,只不过单独给了个文件夹而已。
资源更新
已经安装的apk中的资源,是没办法变动的,所以如果不能热更就变成了一锤子买卖,
出现问题只能重新安装新的apk来解决问题,成本大到离谱,比如显示出错了~,啧啧。
好在虽然我们包体本身资源没有办法修改,但是我们可以添加sd卡的读写权限,
然后再控制资源搜索的优先级,让其先去搜索sd卡,再搜索包体内的资源, <