2011-04-29 91 views
4

我目前正在使用Cocos2D API在iPhone上开发游戏。进行得顺利。我遇到的一个问题是每次我想更改我的变量时都必须重新编译。这非常乏味,尤其是现在我在调整游戏玩法。在cocos2d中为游戏开发创建“开发者屏幕”

是否有任何一种开发者控制台屏幕的实现?我的意思是:我想要加载一种我加载的游戏画面,其中包含我在游戏画面中注册的变量列表(使用滚动条)。我希望能够现场修改这些变量。

我记得有一个关于WWDC事件的演示文稿,他们在iPad上展示了这样一个屏幕。开发者只需按下一个按钮,游戏画面就会变成像屏幕一样的开发者控制台。我知道这个演示文稿与Cocos2D无关,但是,如果这个演示文稿已经以某种形式存在,我很乐意重新使用这个代码,而不是单独编写它。

虽然如果我必须自己写,我真的不知道从哪里开始。所以任何帮助都会受到赞赏。

Thx!

+1

干净的想法。我总是只剩下一个额外的菜单项(或者选择了关于屏幕)来测试一些东西。但我从来没有想过要进入“秘籍”的地方,在没有重建的情况下在飞行中尝试简单的变化变化。 – Marvo 2011-04-29 19:48:37

回答

4

去年苹果WWDC的(我相信)Graeme Devine对如何实现这样一个开发者控制台(检查iTunes大学的视频)有一些建议。一个名为的游戏机包含在example code of WWDC 2010 (232 MB)游戏控制台中。我也added a link (57 kb)从DropBox GameConsole.zip,为了方便。

+0

+1谢谢你,我的好先生。这是我正在寻找的。我将不得不看看我能否以某种方式整合到Cocos2D中。我会让你知道它是怎么回事。我会把这个问题延长一段时间,但如果没有其他人有更好的答案,我会接受你的答案。 – Tovi7 2011-05-02 11:14:42

0

这是一个严重的backdated回复,但我们实现了一个开发者控制台Mega Run来测试各个阶段并在运行时修改玩家属性。实现的目的是在游戏的任何一点点击屏幕的左上角来调出控制台。从那里你可以修改你的需求。实现的框架是重写EAGLView并自己处理touchesBegan触摸回调。这里是实现...

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    const CGFloat DEV_DASHBOARD_ENABLE_TOUCH_AREA = 20.0f; 

    for (UITouch* t in touches) 
    { 
    CGPoint pt = [t locationInView:self]; 

     if (pt.x < DEV_DASHBOARD_ENABLE_TOUCH_AREA && pt.y < DEV_DASHBOARD_ENABLE_TOUCH_AREA) 
     { 
      ToolSelectorContainer* editorViewController = [[ToolSelectorContainer alloc] initWithNibName:@"ToolSelectorContainer" bundle:nil]; 

      if (editorViewController != nil) 
      { 
       CCScene* g = [CCDirector sharedDirector].runningScene; 

       // Pause the game if we're in it playing 
       // 
       if ([g isKindOfClass:[Game class]]) 
        [((Game *)g) menuPause]; 

       [[GSGCocos2d sharedInstance].navigationController pushViewController:editorViewController animated:YES]; 
       [editorViewController release]; 

       break; 
      } 
     } 
    } 

    #endif 

    [super touchesBegan:touches withEvent:event]; 
} 

ifdef用于不编译生产版本的代码。