我對cocos2dx的理解和總結

我對cocos2dx的理解和總結

剛接觸遊戲開發不久,第一個工具選用了cocos2dx這個跨平臺遊戲引擎,在一個多月的使用中,我一直在試圖領略作者在設計這個引擎時候所使用的核心思想,並希望用最簡單的語言將自己對這個引擎的理解表達出來。本文是到目前爲止我對cocos2dx最主要的理解,這個理解在之前的使用和學習中已經有多次修正,在這裏將這一版本寫成微博,和大家相互交流,歡迎批評指正。

  • Cocos2dx有些什麼:

1、一顆或多顆Node組成的樹,Node可以按照規定對不同的事件作出響應,執行一些任務。
2、一個導演,管理這這些樹並不停地給樹拍照

  • 這些事件可能有:

1、導演準備好相機了(進入場景onEnter等遊戲事件)
2、導演要拍照了(幀事件)
3、來了一陣風(外部事件,觸摸、鍵盤)

  • 響應內容可以包括等:

1、告訴導演拍那棵樹、以什麼樣的速度拍、相機調成什麼模式
2、給樹修剪並擺好造型(操作Node)

  • 編寫一個遊戲的基本工作

1、創建一個導演和至少一棵樹,完成基本配置
2、給樹上面的Node編寫響應函數,將遊戲邏輯在其中表示,通過編寫響應函數,我們將遊戲邏輯通過cocos2dx的樹進行描述並通過導演進行展示。

下面對以上的總結進行詳細的解釋:
實現一個cocos2dx的遊戲,有幾個核心的類幾乎是都會用到的:導演Director、場景Scene、佈景層Layer、精靈Sprite。
這些類全部繼承自cocos2dx的基礎類ref,而這四個類有分爲兩支,一個是director直接繼承自Ref,另一個是Scene、Layer、Sprite三大類,他們都繼承自Node這個類。
這個director就是上面所說的那個拍照的導演,而後面的三個繼承自Node的類,就是組成我們這個樹的主要元素。
在這裏,導演類主要負責以下幾件事情:
1、創建一個窗口
2、管理場景
3、與OpenGL打交道
所以說,我們的導演就是拍照(創建窗口)給我們看的那個人,同時因爲他和OpenGL打交道,所以說他可以操作攝像機拍出各種效果,最後呢,他還能通過管理場景決定拍哪棵“樹”。
再說說那棵樹,在cocos2dx中,所有展示出來被我們看到的東西,幾乎都是一個Node,Node有幾個主要的功能,例如添加到某個父節點、添加子節點、設置顯示內容、設置大小、設置位置、設置錨點等等。繼承自Node的幾個類,均繼承了Node的這些功能,同時又根據自己的定位有不同的特性。
cocos2dx使用Node這個類以及它的衍生類,通過經典的組合模式,使得繪製遊戲場景變得輕鬆而且嚴密。這和Node的兩個特性是分不開的,一個是每個Node作爲樹的組成部分,他可以管理自己的父節點和子節點,這使得遊戲場景中所有的元素都被聯繫並管理起來;二是每一個帶有多個子節點的Node在組合模式的設計下,可以被當做一個Node來進行操作。
這樣,我們所說的場景設計,就簡單地編程了設計一棵樹,我們在scene這個根節點上放上幾個Layer,然後再在Layer上放幾個Sprite,讓sprite按一定順序或邏輯動起來,一個場景就做出來了,在執行邏輯的時候,對一個Layer進行操作(例如隱藏),它上面所有的Sprite都會跟着響應,非常方便。當然也可以不這樣的順序來,因爲他們都是Node,只要應用的合適,可以任意的組合,甚至可以定製自己的Node來進行繪製。
最後,由於導演和Node都繼承自ref,他們都享受了cocos2dx內存管理(類似垃圾回收)機制帶來的福利,在不被使用的時候會被自動回收,大大減小了c++內存管理的工作量。
以上就是cocos2dx幫我們解決的場景管理、繪製以及展示的工具,給我們帶來的設計上的便利,那麼我們如何利用cocos2dx實現遊戲的編寫,或者說如何通過代碼將遊戲的數據和邏輯轉化成可視可控的2d遊戲。
於是就要用到cocos2dx三個重要的事件,一是遊戲的事件,最主要是幀事件,就是我們所說的導演拍照,還有諸如進入場景的事件等,二是cocos2dx的外部事件(如觸摸、點擊等),三是遊戲自定義的事件,我們主要通過定義這三個事件的響應實現遊戲的邏輯。
通過cocos2dx開發遊戲,我們要做的有如下幾樣工作:
1、在進入程序主循環時創建導演,做一些相關的設置、創建一個Scene並由導演執行
2、設計遊戲的邏輯,主要是每幀的響應邏輯和對不同事件的響應邏輯,在這些邏輯中,我們完成遊戲的數據處理,並根據當前的遊戲狀態,操作當前的場景,對上面的Node進行增刪、顯示、播放動畫等操作,或者進行場景切換,實現邏輯層到顯示層的轉化。

以上是我對cocos2dx的簡單的理解,當然cocos2dx經過多個版本的發展,已經具備非常龐大的功能體系,同時一個複雜2d遊戲的開發還需要用到更多的功能和體系。
本文希望通過簡單的比喻,就cocos2dx在實現遊戲邏輯的思想上做一些總結和學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章