不知不覺已經做了5年的cocos2dx開發了,其中絕大多數時間都是純C++做休閒類遊戲(工作需要),當然閒下來也抽時間擼過cocos的新寵CocosCreator。
一次無意中在cocos2dx的官方文檔中看到了使用lua或者js腳本來擴展C++節點,難道這就是傳說中的C++和lua混合開發的姿勢?
不過官方介紹的很簡單很簡單,幾乎可以說就是提了一下,貌似不願多說一樣。
官方鏈接:https://docs.cocos.com/cocos2d-x/manual/zh/scripting/
興奮的本人,立刻複製粘貼官方代碼,準備跑起來試試。結果各種報錯,因爲用cocos new命令創建的C++工程,默認是沒有lua相關的支持,所以需要自己改C++工程。
由於官方沒有給任何關於C++工程中使用lua腳本的環境搭建教程,所以我就踏上了苦逼的踩坑之路。
網上能收到相關的帖子介紹,不過或多或少都遇到了一些問題,現在我總結下我的成功步驟:
1:拷貝cocos2d-x-3.17.2\cocos目錄下的scripting文件夾放到cocos2dxPro\HelloWordDemo\cocos2d\cocos目錄下
2:拷貝cocos2d-x-3.17.2\external目錄下的lua文件夾放到cocos2dxPro\HelloWordDemo\cocos2d\external目錄下
3:打開C++項目的win32工程,右鍵解決方案->添加->現有項目,然後選擇cocos2dxPro\HelloWordDemo\cocos2d\cocos\scripting\lua-bindings\proj.win32中的libluacocos2d項目。
4:右鍵解決方案->屬性->通用屬性->項目依賴項,勾選libluacocos2d。
5:右鍵啓動項目->添加->引用,勾選libluacocos2d。
6:右鍵啓動項目->屬性->C/C++->常規->附加包含目錄,添加如下路徑:
$(EngineRoot)cocos\scripting\lua-bindings\auto
$(EngineRoot)cocos\scripting\lua-bindings\manual
$(EngineRoot)external\lua\lua
$(EngineRoot)external\lua\tolua
$(EngineRoot)external\lua\luajit\include
做完以上步驟,編譯到最後若libluacocos2d編譯出錯,就繼續執行下面的步驟。
7:右鍵libluacocos2d項目->屬性->生成事件->預先生成事件->命令行。刪除命令(這個項目編譯出錯所以我刪除了這個命令)
做完以上步驟,編譯到最後發現提示無法打開lua51.lib(其實就是沒有這個lib),執行下面的步驟。
8:找到HelloWordDemo\cocos2d\external\lua\luajit\prebuilt\win32目錄下有兩個文件,lua51.dll和lua51.lib。拷貝lua51.lib放到VS2015安裝目錄下\VC\lib下,拷貝lua51.dll放到Windows\SysWOW64目錄下
完成以上步驟,就可以把win32工程跑起來了,踩坑完畢!