程序員啰嗦隨筆: ios-集成cocos引擎

20170-11-25 周六?

? ? ? ? 前段時間離職,然后花了一周的時間找工作。在找工作的過程中發(fā)現(xiàn)了自己很多的不足和需要改進的地方。細細反思在前一家公司的工作感覺進步不大,總結(jié)下來有兩點。第一點: 人很懶 沒有主動的去學習和了解新的知識變化 第二點:對于自己做的東西沒什么總結(jié)和進步。所以希望自己以后每一周的周末都能記錄下當周解決的問題。

? ? ? ? 我馬上要負責的一個項目是做一個游戲平臺。所以這一周主要的工作是完成對應的難點調(diào)研,主要是了解 點擊下載游戲 然后就能夠玩游戲的過。因為我們的游戲是用cocos開發(fā)的,大家都知道cocos開發(fā)的游戲是可以跨平臺的,那么我怎么才能模擬這個過程,在原生的界面能夠調(diào)起cocos這個游戲呢?

? ? ? ? ?剛開始也是一臉懵逼,完全不知道如何去處理。這個時候溝通就顯得特別重要。首先我找到我們這邊的技術(shù)大牛 問了一下,他講了一下思路: 把cocos 引擎做成靜態(tài)庫 引入工程,然后基礎(chǔ)的C++ 部分都抽出來 搭成框架,然后就差不多了! 大佬就是大佬,聽完我還是一臉懵逼。但是好歹有了一個方案。 然后我去問我們這邊做資深cocos的開發(fā),如果我要做出這樣的一個功能 他需要提供給我cocos里面什么東西。然后他給了我一堆文件,


? ? ? ? 有了這些文件 ,我就直接在百度里面直接 搜索 ios集成cocos引擎,然后在一個論壇上一位大哥做過類似的功能,也是將 cocos 工程 打包成 .a 的靜態(tài)庫,然后暴露出里面的 .h文件 供人調(diào)用。不管三七二十一 先跟著做,熟悉一下是怎么樣的一個情況??。結(jié)果在跟著 完成 cocos_lib.a 的文件的時候,出現(xiàn)了很多編譯上面的錯誤. 我解決了一個 就 出現(xiàn)一堆 紅色。那個心塞啊。怎么辦,繼續(xù)百度唄(stackoverFlow 公司太慢了),然后看到簡書的一篇文章 也是將cocos的工程給集成到了ios的工程,但是不是打包成.a的文件而是 直接把相關(guān)文件直接引入到對應的工程,死馬當活馬醫(yī)吧,照著這邊文章在來一次,然后還是各種編譯錯誤,人都要瘋了。但是在這個過程中,我去比較了 打包 和 不打包的兩種方法的異同。發(fā)現(xiàn)無論是打成.a 的包還是直接映入文件涉及到的文件內(nèi)容 是一樣的,也就是說兩種方法本質(zhì)是一樣的,只是我哪里做錯了。

? ? ? ? 這個時候 我繼續(xù)做了一個事情就是溝通,我把我們的技術(shù)大牛叫來,然后說了下我 想 打成.a的包 但是失敗了,希望能夠指點。然后了解到這樣做涉及到了cocos的一個.cl(針對引擎加速的) 的文件 但是 ios 不支持。我應該自己下一個cocos的引擎,然后建一個 空白的工程,來做相關(guān)的實驗。這個時候才意識到,做這種調(diào)研 就應該 從最簡單的Demo 情況去探索。 接下來的就是記錄技術(shù)了。

? ? ? ? 由于我是最開始開發(fā)的,選了一條比較簡單的路走的。 首先下載一個cocos-x引擎,然后根據(jù)官網(wǎng)文檔,建一個cocos的工程。打開這個proj_ios.mac 文件,然后直接運行一次! 如果 碰到了一些錯誤,可以更換 里面的 libluajit.a 文件 (百度原因可搜索到)。直接把對應的工程運行起來,會看到cocos的引擎起來的一個界面。


?接下來 更具App 啟動周期 找到 是在哪個位置 啟動cocos的,我發(fā)現(xiàn)是在AppController 里面,如圖的代碼!?

? ? ? ? 看這段代碼 主要是吧 cocos 引擎跑起來,然后把界面顯示在一個 RootViewController 上,那么問題就簡單了,自己新建一個 控制器,作為創(chuàng)建的根控制器。 然后把里面的 C++ 的代碼 有 點擊按鈕控制,這里主要注意一點的 是 oc 和 C++ 混編的時候,.m文件必須得改成 .mm 文件。

接下來 就是沒什么問題了,但是由于我們現(xiàn)在cocos工程集成到了項目里面來的,如果我想 下載后 然后 運行,那怎么處理, 首先 我吧工程里面文件的 remove references 去掉引用,然后把對應的 res文件和 src 文件 都丟到沙盒里面去了。 然后找到對應的 AppDelegate.cpp的c++ 文件 這個是cocos 的 入口?

? ? ? ? ? ?主要現(xiàn)在是 需要找到 src 里面的”main.lua“, 這里的getWritablepath 方法 是得到 寫入路徑(ios 里面的沙盒路徑),然后設(shè)置搜索路徑 為 res 和 arc 這樣兩個文件夾 ! 那么一切ok 。?

? ? ? ? 接下來 我把 我們cocos游戲兩個包 丟到沙盒, 發(fā)現(xiàn) 還需要把一部分C++代碼 需要集成到工程,因為在做網(wǎng)絡基礎(chǔ)庫 是用C++寫的供對應的 代碼調(diào)用,那么現(xiàn)在是怎么樣 讓lua 代碼 能夠調(diào) C++ 的文件呢! (我在想 既然cocos 能調(diào)用 我這邊也應該可以,原來 cocos 研發(fā)已經(jīng)完成了 C++ 到lua的綁定,實際我這邊需要做的也是這個綁定)

這個位置是完成了 lua 對 C++一些文件的注冊,然后 解決的問題,就ok! 實際在這個時候 我發(fā)了一段時間來解決應用的問題, 經(jīng)常會出現(xiàn) class refrence 的問題 ,就我覺得的辦法 大致就是: 找不到 頭文件 user header Search Paths , 如果出現(xiàn) .o 文件的編譯錯誤, 那么 如果該文件存在 的話 那么 是可以 compile Sources 和 Link Binary With libraries 添加對應的 引用庫和 文件! ! ! 好啦,今天大概的啰嗦到這!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容