【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 热加载实现的更多相关文章

  1. webpack 教程 那些事儿03-webpack两大精华插件,热加载

    本节主要讲述 webpack的两大经典开发调试插件,热插拔内存缓存机制 文章目录 1. html-webpack-plugin插件的使用 2. webpack-dev-middleware 插件登场 ...

  2. [Eclipse] - 集成JBoss7热加载和自动发布

    使用Eclipse + JBoss开发时,总是要重启项目或JBoss,烦人.下面方法可以很简单的实现Eclipse + JBoss热加载和自动发布. 我的环境是JBoss 7.1.1 Final 1) ...

  3. [Eclipse] - 集成Tomcat热加载插件

    使用Eclipse + Tomcat,要使用热加载,总是会重启tomcat webapp. 可以使用这个插件:jrebel 如果是Tomcat 7.0+版本,需要使用jrebel5.5.1+的版本,不 ...

  4. Eclipse tomcat插件禁用热加载

    Eclipse中的tomcat插件默认是开户了热加载,只要是修改了java文件一保存,tomcat自动编译.加载.发布,很吃内存. 关闭方法: 打开eclipse,找到server项: 双击打开,修改 ...

  5. mybatis热加载的实现

    最近在使用mybatis,由于是刚刚开始用,用的并不顺手,目前是感觉有2个地方非常的不好用: 1.mybatis调试不方便 由于dao层只有接口,实现只是一个map的xml文件,想加断点都没有地方加, ...

  6. nginx多进程模型之配置热加载---转

    http://blog.csdn.net/brainkick/article/details/7176405 前言: 服务器程序通常都会通过相应的配置文件来控制服务器的工作.很多情况下,配置文件会经常 ...

  7. 使用gulp实现文件压缩及浏览器热加载

    一.安装gulp 首先,你要安装过nodejs,如果没有安装过的同学请自行下载.  先再命令行里输入   npm install gulp -g   下载gulp 二.创建gulp项目 创建一个你需要 ...

  8. webpack2+node+react+babel实现热加载(hmr)

    前端工程化开发的一个重要标志就是热替换技术,它大大的提高开发效率,使我们专注于写代码,webpack2中的热替换相比较1更加简洁. 1. 先看效果 2.目录结构 3.项目目录结构文件描述 bin 执行 ...

  9. 使用webpack热加载,开发多页面web应用

    我们一般使用webpack热加载开发SPA应用,但工作中难免会遇到一些多页面的demo或项目. 故参考 kingvid-chan 的代码,搭了一个使用HRM开发多页面web应用的脚手架,刚好也进一步学 ...

随机推荐

  1. js 数组判断是否包含某元素 或 数组去重

    判断包含: 1.借助 jquery  $.inArray(obj.UNIVERSITY_NAME, arryDatas) < 0var arr = [ "xml", &quo ...

  2. Codeforces Round #475 (Div. 2)

    B. Messages 题意:有n个消息分别在ti的时候收到.设所有消息收到时初始值为A,每过一秒,其值减去B.当在某一秒选择读某个消息时,获值为当前消息的值:如果在某一秒结束的时候,手上有k则消息未 ...

  3. Fatal error in launcher: Unable to create process using '"'的报错解决

    执行命令前加python -m就好了 python -m pip install --upgrade pip这条命令用来升级pip

  4. UTC和时间相互转换

    // ToLocalTime() UTC时间转换为本地时间 public static DateTime UtcToDateTime(long number) { , , , , , , ).AddS ...

  5. javaEE中的hibernate配置笔记

    0 从web.xml出发 项目中用Spring整合Hibernate,Spring贯穿整个项目,所以先看看Spring在哪一步整合了Hibernate.先看部分web.xml. 在context-pa ...

  6. datagrid 用法

    http://blog.csdn.net/xhhuang1979/article/details/8331682

  7. nginx3

    Yum安装更简单.安装并启动keepalived,表示安装成功.有3个进程. etc\keepalived\keepalived.conf: 备的keepalived配置文件: ! Configura ...

  8. Vue-router学习(一)- 路由匹配

    一.Vue-router引入使用 Vue-router就是一个vue路由类,通过new一个Vue路由实例,然后Vue.use()嵌入即可. 一般分为以下步骤: 1.引入 (1).方法一:npm包嵌入, ...

  9. 动态背景的CSS3登录表单

    在线演示 本地下载

  10. Linux网络IO函数以及TCP连接函数包装

    标准I/O VS 网络IO 标准I/O又称为标准I/O流,从某种意义上讲是全双工的,因为程序能够在同一个流上执行输入和输出. Unix/Linux对网络的抽象是一种称为套接字的文件类型.和任何Unix ...