2011-03-31 83 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