2011-04-29 118 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用於不編譯生產版本的代碼。