cocos2dx lua 热加载实现

【Q】原创 2015-08-30html

  在公司使用cocos2dx+lua 开发游戏有一段时间了,恰好lua的热更新交给我负责。之前热更新的lua脚本大部分都是在下载以后加载。最近策划又有新需求,须要在游戏过程进行若是有热更新须要提醒用户,也意味着在内存里的lua文件可能不是最新的。后来查到http://www.2cto.com/kf/201411/351833.html此博客发现lua原来加载到了一个package.loaded的缓存中,只要相应的将此设为空并require便可。缓存

     后来也就按照该博客的思路也想实现一个一键从新加载全部的lua文件,以此来解决每次都启动模拟器问题。因为项目在开发过程当中采用的mac模拟器,因此整体实现是可行的。项目在一个主要场景注册了一个按键事件。此次我采用的ctrl+r组合健实现。框架

代码我也就不贴了,主要也是那篇博客的方法,可是也有修改,socket

一、外部库 登记添加更多的一些库,好比protobuf、string、math等。ui

二、针对外部库,咱们认为不会修改,所以对外部库的处理显示不从新加载。lua

三、针对框架的文件,好比cococs2d的文件,咱们认为在开发过程也不会修改,因此在过滤了一些此文件。htm

四、因为从新加载了全部的lua文件、在此以前也将相应的socket断开链接。游戏

五、清空了全部的内存纹理。事件

在实际使用因为不须要从新启动模拟器了,加快了开发。在此感谢该博客做者的热心分享内存

相关文章
相关标签/搜索