1. 程式人生 > >cocos2d-lua整合到ios工程,即在ios原生應用中可以直接玩cocoslua開發的遊戲

cocos2d-lua整合到ios工程,即在ios原生應用中可以直接玩cocoslua開發的遊戲

前段時間配合其他部門把cocostudio做的動畫拿到ios原生引用中播放,把cocos2d-x做成靜態庫並保留了一個頭檔案給ios那邊呼叫,可以實現ios呼叫cocos2d-x,最近又要實現cocos2d-lua版本的,思路差不多,不過最後是呼叫的指令碼,可以把指令碼直接看做資源,坑也有幾看踩踩填填就好啦。
我用的是cocos2d-x 3.12版本,如其他版本遇到不同的問題,也可以及時反饋,大家一起解決 ,共同進步哈。


1、生成libluacocos2d iOS.a 靜態庫,步驟如下
       (1)、如圖"001"開啟cocos2d工程目錄下的cocos2d_lua_bindings.xcodeproj

        

        (2)、如圖"002"這裡選擇libluacocos2d iOS ,然後點選Edit Scheme 選擇release模式編譯

 






(3) 、不出意外的話,編譯成功後,如圖位置會出現 libluacocos2d iOS.a 檔案,選中它,在如圖 "003" 最右邊的位置會看到檔案位置,然後開啟 Finder , 按下 command + shift + G 
進入檔案搜尋,如圖 "0031" 把剛剛那個檔案地址貼上進去,找到 libluacocos2d iOS.a 檔案如圖 "0032" ,拷貝到如圖所示工程目錄下的 cocos2d-x/build 目錄下如圖 "0033"
  
  
  
 

2 、生成 libsimulator.a 靜態庫,步驟如下
  (1) 、如圖 "2(1)" 開啟 cocos2d 工程目錄下的 libsimulator.xcodeproj


(2)、同(1)步驟生成libsimulator.a靜態庫,也拷貝到工程目錄下的cocos2d-x/build目錄下
3 、生成 libcocos2d.a 靜態庫,步驟如下   (1) 如圖 "3(1)" Classes 檔案拷貝到工程目錄下的 cocos2d-x/build 目錄下,開啟 cocos2d_libs.xcodeproj
 

(2) 如圖 "3(2)" "3(21)" 新增 Classes 到工程中 , 這裡按圖示勾選
  
 




(3) 同樣的方式把之前生成的 libluacocos2d iOS.a libsimulator.a 也新增進來

(4) 1(2) 的步驟選擇 release 模式編譯
(5) 如圖 "3(5)" 選中 PROJECT 後在 User Header Search Paths 裡新增相應標頭檔案目錄,不然會出現各種找不到標頭檔案的錯誤。

 


(6) 如圖 "3(6)" 選中 TARGETS 後在 User Header Search Paths 裡新增相應標頭檔案目錄。
 

(7) 如圖 "3(7)" .m .cpp 檔案都拖到 Compile Sources 裡面

 

(8) 如圖 "3(8)" animationManager.h 檔案拖到 Header public 中,其他標頭檔案拖到 Project
 

 (9) 執行 Run 編譯,不出意外的話會生成一個如圖 "3(9)"libcocos2d iOS.a 檔案
 


4 (1) 如圖 "4(1)" 拷貝靜態庫 libcocos2d iOS.a 和標頭檔案 AnimationManager.h ios 專案工程根目錄下
 

(2) 並新增到專案中如圖 "4(2)".
 

(3) 如圖 "4(3)" 根據 cocos2d 工程給 ios 工程新增相應的庫

 (4) cocos2d-lua工程下的Resources整個拷貝到ios工程根目錄下,以group的方式如圖"4(4)"匯入Resources,刪除掉裡面的檔案, 再把裡面的檔案包括srcres等以reference的方式新增進來如圖"4(42)",使其資料夾變成藍色(重點)如圖"4(43)"
  
  
 

(5) 如圖 "4(5)" 在需要呼叫 cocos2d 的類中匯入標頭檔案 AnimationManager.h, 並呼叫相應介面如圖 "4(51)"

  
 

(6) 如圖 "4(6)" 修改當前呼叫的類的字尾名為 .mm

 

(7) 如圖 "4(7)" 注意修改模式為 release

 

(8) other linker flags  中新增  -pagezero_size 10000 -image_base 100000000    參考   https://segmentfault.com/a/1190000005021419
(9) 執行在這裡會呼叫 cocos2d 介面