【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斷開鏈接。遊戲
五、清空了全部的內存紋理。事件
在實際使用因爲不須要從新啓動模擬器了,加快了開發。在此感謝該博客做者的熱心分享。內存