2011-03-31 39 views
2

我剛剛開始學習Cocos2d使用偉大的教程 Ray Wenderlich已經產生。不過,我已經到了我的HelloWorldScene主文件變得有點大的地步。組織文件在Cocos2d

我希望能夠將精靈生成方法分類到一個文件,其他。方法轉換爲另一個等等,給我留下包含不同場景和init方法的核心級文件。

是否有可能將方法複製到新的.m文件中,並在需要時將它們帶入HelloWorldScene.m中?

你如何組織你的遊戲文件?

回答

5

我強烈建議分層您的遊戲。它保持組織和整潔,減少任何一個文件中的代碼量。

在cocos2d中,您應該注意3個類來實現此目的:
CCDirector,CCScene,CCLayer。你可以做的是,在單個場景(GameScene)中創建多個圖層。例如: 擁有HUD,遊戲界面,背景和前景。

這些都可以拆分成單獨的CCLayers並在CCScene中加入到一起。

所以,現在你已經分手HelloWorld.m爲: GameScene.m
HudLayer.m
GameInterfaceLayer.m
Background.m
Forground.m

導入所有的.h文件到您的後GameScene.h,然後您可以將每個圖層添加到場景中,如下所示:

@implementation GameScene 
+(CCScene){ 

HudLayer *hud = [HudLayer node]; 
[self addChild: hud z:3]; 

GameInterfaceLayer *game = [GameInterfaceLayer node]; 
[self addChild: game z:1]; 
...} etc 
@end 

一旦你這樣做,如果你不改變你的Ap pDelegate,你的CCDirector會給你一個錯誤。 CCDirector基本上決定加載哪個場景。
將其更改爲指向您的GameScene。

您可以想象:電影的導演,拍攝場景,充滿了許多層。

+0

謝謝,真的讓我明白了。有一個問題 - 當你說改變應用程序委託時,就是這麼簡單,所以GameScene在加載時運行? – Alex 2011-04-01 09:47:06

+0

是的,ccdirector將嘗試在helloworld實現中加載場景(默認情況下)。因爲您將其移除並放入新創建的gamescene中,您需要將appdelegate指向新位置。你運行了嗎? – Ospho 2011-04-16 07:34:01

+0

是的,我做了:)非常感謝。我最終做的是使用主GameScene.m文件來保存所有核心內容,例如hud和遊戲邏輯,然後爲友方精靈,敵方精靈,菜單屏幕等創建單獨的文件。目前爲止工作得非常好! – Alex 2011-04-18 08:52:32