cocos2dx3.0 超級馬里奧開發筆記(二)——正確規劃遊戲的邏輯

       本來想出一個完整的開發筆記,因爲個人原因,代碼已經OK了,博客的話就不貼代碼了,直接講解一下整個遊戲的設計,更確切的說是新手開發時應該注意的地方。


1.角色類正確的繼承和擴展----擴展閱讀(MVC)。

         我們要封裝一個角色類,第一印象就是封裝一個繼承自sprite的精靈,裏面封裝好瑪麗的動作和角色屬性等。繼承自sprite是可行的,我們只要重寫幾個static create函數,然後把這個精靈貼到層上即可。

        仔細考慮一下,如果角色要再添加一個特效跟隨呢,角色吃到道具出現幻影分身呢?一系列的BT需求會發現繼承自sprite其實很雞肋,會導致代碼很臃腫,這不是我們繼承的本意。所以我們要採用繼承自node來創建角色(當然,也可以繼承自layer,他們兩個的實現應該是一樣的,區別在於觸摸時間的響應,我木有用過,^_^),我們可以在node裏添加我們想要的cocos2dx的對象來完善角色類。

        補:今天看子龍山人的blog引用一下

     這個MVC模式和遊戲實體組件系統差不多,我在這篇文章裏面就有介紹過了。對於這兩個系統來說,它的思想都是統一的,那就是不要繼承CCSprite並把遊戲logic全部塞到sprite裏面去。CCSprite應該只負責渲染顯示。而且有時候,你可能需要創建很多sprite,我們最好是創建一個CCNode類,然後裏面聚合許多sprites。這樣CCNode成爲了Controller,控制view。當view(比如sprite,effect,gL drawings等等)在屏幕上面移動的時候,controller結點會輪詢所有它包含的結點來查詢一些遊戲相關的狀態信息,並且做一些遊戲邏輯,然後反過來再更新view。

參考地址:點我!

子龍山人原blog:點我!

2.主場景層、遊戲層、控制層、展示層、地圖層、角色層的關係。

(原諒我不會畫圖)

首先在寫代碼之前,我們應該明確整個地圖層的關係,不要把所有的東西添加到同一個層中來控制。

主場景層是遊戲中最大的一個層,它包含了整個場景中其他的所有節點。

控制層:虛擬遙感所在的層

遊戲層:我們所看到的地圖和人物所在的層

展示層:一些分數血量等靜態的東西。


這麼做的好處在後期代碼的編寫中是顯而易見的,特別是對於精靈position的控制,我們不需要使用過多的座標轉換來移動一些角色和地圖。

3.TMX地圖的設計

在TMX地圖中我們也要儘可能的對遊戲中不同屬性的元素進行劃分和分類管理。 同屬性的元素應該在同一個Layer裏面。如下:


在解析地圖的時候,我們就可以實現分層來控制整個地圖中的元素。

4.內存的管理

代碼中出現了很多的內存泄露,我始終沒有查到原因,retain的地方我都是用了release但是還是會有泄露。
在下個項目中是用元素的時候,我想我不會再直接使用create了。而是採用預加載的方式,對所有的材質進行統一管理,讀取的時候直接從內存中讀取,釋放的時候統一釋放。



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