cocos2dx lua 热加载实现
2015-08-30 19:06
260 查看
【Q】原创 2015-08-30
在公司使用cocos2dx+lua 开发游戏有一段时间了,刚好lua的热更新交给我负责。以前热更新的lua脚本大部分都是在下载之后加载。最近策划又有新需求,需要在游戏过程进行如果有热更新需要提醒用户,也意味着在内存里的lua文件可能不是最新的。后来查到http://www.2cto.com/kf/201411/351833.html此博客发现lua原来加载到了一个package.loaded的缓存中,只要相应的将此设为空并require即可。
后来也就按照该博客的思路也想实现一个一键重新加载所有的lua文件,以此来解决每次都启动模拟器问题。由于项目在开发过程中采用的mac模拟器,所以总体实现是可行的。项目在一个主要场景注册了一个按键事件。这次我采用的ctrl+r组合健实现。
代码我也就不贴了,主要也是那篇博客的方法,但是也有修改,
1、外部库 登记添加更多的一些库,比如protobuf、string、math等。
2、针对外部库,我们认为不会修改,因此对外部库的处理显示不重新加载。
3、针对框架的文件,比如cococs2d的文件,我们认为在开发过程也不会修改,所以在过滤了一些此文件。
4、由于重新加载了所有的lua文件、在此之前也将相应的socket断开连接。
5、清空了所有的内存纹理。
在实际使用由于不需要重新启动模拟器了,加快了开发。在此感谢该博客作者的热心分享。
在公司使用cocos2dx+lua 开发游戏有一段时间了,刚好lua的热更新交给我负责。以前热更新的lua脚本大部分都是在下载之后加载。最近策划又有新需求,需要在游戏过程进行如果有热更新需要提醒用户,也意味着在内存里的lua文件可能不是最新的。后来查到http://www.2cto.com/kf/201411/351833.html此博客发现lua原来加载到了一个package.loaded的缓存中,只要相应的将此设为空并require即可。
后来也就按照该博客的思路也想实现一个一键重新加载所有的lua文件,以此来解决每次都启动模拟器问题。由于项目在开发过程中采用的mac模拟器,所以总体实现是可行的。项目在一个主要场景注册了一个按键事件。这次我采用的ctrl+r组合健实现。
代码我也就不贴了,主要也是那篇博客的方法,但是也有修改,
1、外部库 登记添加更多的一些库,比如protobuf、string、math等。
2、针对外部库,我们认为不会修改,因此对外部库的处理显示不重新加载。
3、针对框架的文件,比如cococs2d的文件,我们认为在开发过程也不会修改,所以在过滤了一些此文件。
4、由于重新加载了所有的lua文件、在此之前也将相应的socket断开连接。
5、清空了所有的内存纹理。
在实际使用由于不需要重新启动模拟器了,加快了开发。在此感谢该博客作者的热心分享。
相关文章推荐
- Cocos2d-x游戏开发之Lua学习笔记
- Cocos2d-x从入门到精通第四课《Cocos2d-x中的FileUtils》
- cocos2dx-ScrollView和 ListView、PageView控件的使用
- cocos2dx-ui的分类与使用
- cocos2dx-ui的渲染机制
- cocos2dx3.3在Windows环境搭建以及新工程创建
- Cocos Studio images文件与CSB的路径相对关系
- Cocos2d-x坐标系理解
- cocos2dx的渲染机制
- cocos2dx 3.7 创建工程
- 【Cocos2dx】Android编译报Argument list too long错误
- cocos2d-js 翻版神棍传说demo
- cocos2dx场景A跳转到场景B,然后场景B再向A回传值(委托设计模式实现)。
- 基于cocos2dx的RPG简单实用算法之3 - 多角色跟随阵型移动
- Cocos2d-x内存管理-绕不过去的坎
- [cocos2d-x] --- 完美解决中文乱码
- cocos2d-x 跨平台退出应用程序时的不同设置
- Cocos2d-x ---------------------------吞没事件---setSwallowTouches
- Cocos2dx学习笔记9:cocos2dx锚点(Anchor Point)
- Cocos2dx学习笔记8:cocos2dx坐标系