• cocos2dx lua 热加载实现


    【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、清空了所有的内存纹理。

    在实际使用由于不需要重新启动模拟器了,加快了开发。在此感谢该博客作者的热心分享

     

  • 相关阅读:
    男人
    获得类的基本信息
    jsoup中selector的用法及作用
    心理学导论 1 心理学在搞什么
    全球最佳50科技站点
    国际专利运营新势力
    关于gridview的那点事。。。
    关于.net的ValidateRequest=false失效
    Sql Server 的DataReader 与 DataSet
    Ubuntu9.10下 php(FastCGI PHPFPM)+Nginx+.........
  • 原文地址:https://www.cnblogs.com/qboy/p/4771383.html
Copyright © 2020-2023  润新知