cocos code ide選擇Engie Mode時報錯:Lua:不能找到D:\cocos2d-x-3.14.1\templates\lua-template-runtime\runtime\..

如題:
coco code ide選擇Engie Mode時報錯:Lua:不能找到D:\cocos2d-x-3.14.1\templates\lua-template-runtime\runtime\android/PrebulidRuntimeLua.apk
解決方法:
這是逗逼Cocos的bug,請用命令行創建項目並生成.exe文件後,在cocos code ide中關聯運行。

原文地址:http://blog.csdn.net/panshiqu/article/details/46835713
Cocos2d-x-3.6
Cocos Code IDE V1.2.0
目的:朋友曾給過我建議,C++層與LUA層通過JSON進行數據傳輸,想實現一下這個功能。
背景:已經學過兩週的cocos2dx啦,但僅僅止步於C++代碼,雖然還涉及了一些JAVA代碼,關於這個大家可以看我早些的博客。
需求:至少要建立一個LUA的項目,這裏我們就對此展開討論
實現:
首先最簡單的方法是通過命令的方式創建項目cocos new xhome -p org.cocos2dx.xhome -l lua -d xxx,如此以來,Visual Studio打開項目生成,就可以生成可執行程序,當然也可以調試C++層代碼,也僅僅是C++層代碼。這麼一來就滿足不了我的需求了,若是我想實現我的功能必然要編寫LUA邏輯,能調試LUA代碼將對開發的效率有着至關重要的影響。走到這裏只能放棄這個方法。
若想調試LUA代碼,使用Cocos Code IDE當然應該是再合適不過了,這樣我就去官網下載了最新版本Cocos Code IDE 2.0.0-beta,然而安裝,創建項目,一切都太順利了(中間可能要配置一下Engine Mode,配置這裏的時候好像沒有出錯)但是最後再去Make(這裏應該是編譯吧,第一次用不懂的太多),就報了一個我一直也沒有解決的問題,記不太清了,Lua SDK,要指定路徑的意思,那個頁面有kahlua和luaj兩個選項,應該選一個,指定路徑就能進行後續的編譯等等操作吧。遺憾的是我一直沒有找到解決方案。最後在官網上又看到了目前關於新版支持Lua並不是很好,而且有很多功能還處於未完成狀態,對於一個僅僅是隻想用一次的人來說,學習它實在划不來,算是給自己一個輕言放棄的理由吧。
這時我就把目光集中在Cocos Code IDE早期的穩定版本。其實官網都說1.2版本和2.0版本其實是兩個東西,用的底層框架都不一樣,一個是Eclipse,新版是intellij。於是這時我就卸載了新版安裝了Cocos Code IDE v1.2.0版本。接下來我就慢慢說我遇到的各種問題。
首先當這個版本選擇Engine Mode的時候,總是報Lua:不能找到D:\cocos2d-x-3.6\templates\lua-template-runtime\runtime\android/PrebuiltRuntimeLua.apk,請確保引擎是完整的並重試一次,不難理解程序檢測到我指定的cocos2dx目錄缺少關鍵性文件,就報錯了。這個錯誤直接影響不能創建Lua項目,這個不是重點,但是依然有解決辦法,就是下載一下cocos2d-x-3.4,把3.4版本的lua-template-runtime拷貝到3.6版本,3.6版本的重命名一下,不要刪除了,下面還要用到呢。這樣就能創建Lua項目了,關於lua-template-runtime和lua-template-default這兩個模板的區別,網上也有很多朋友提到,lua-template-runtime就是專門給Cocos Code IDE使用的,而lua-template-default應該就是cocos命令行創建項目默認使用的模板。
然後直接創建的項目,debug會報錯,這個錯不重要,很有可能是3.4版本創建出來示例代碼,已經不能在3.6版本中運行

然後就研究了一下cocos命令,發現可以這樣創建項目,cocos new xhome -p org.cocos2dx.xhome -l lua -t runtime -d xxx,當然這是恢復3.6自己的lua-template-runtime創建的項目,如此以來我就可以好好看看3.6版本創建的專門針對Cocos Code IDE的項目到底長什麼樣子,創建成功後導入進Cocos Code IDE,發現還是不能運行,缺文件:runtime/win32/PrebuiltRuntimeLua.exe,這個文件原本就應該在lua-template-runtime裏面包含的,可是不知道爲什麼3.6版本不再有這個文件夾了,也沒有找到那篇文章特意提到這個問題。這個時候我嘗試性的用Visual Studio打開項目,編譯一下,發現在runtime文件夾中出現了exe的可執行文件,在運行-配置 模擬器路徑那裏指定一下,就可以成功運行了。建議最好在調試-配置裏面進行指定,因爲中間有一插曲,就是一調試就停在Play那個藍色的界面,說什麼連接不上超時之類了。這個問題也是困擾了我一段時間,在我將要放棄的時候,它又可以了,曾經我一度揣測,原因應該是這樣的,VS編譯出來的就是可執行文件,Cocos Code IDE指定以後,直接運行肯定是沒有問題,但是調試我想應該是有一個外殼程序加載生成的可執行程序的吧,VS生成的時候也肯定不知道Cocos Code IDE調試的套路,所以一調試就死在那裏。但是既然好了那就這樣吧。

這樣我就可以開始編寫我的邏輯了,縱然最後我放棄了這個解決方案,選擇了讓Lua直接支持Protobuf來進行數據的解析。相比之下,我若用Json再傳一次,不僅C++層和Lua層都需要支持解析Json格式數據,而且C++層需要爲每個協議增加不同的處理邏輯,這樣在協議發生改變或是增加新的消息協議都將需要重新編譯C++代碼,這將是很難忍受的。

發佈了95 篇原創文章 · 獲贊 40 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章