2011-04-29 3 views
4

저는 현재 Cocos2D API를 사용하여 iPhone에서 게임을 개발 중입니다. 잘되고있다. 내가 가지고있는 한 가지 문제는 변수를 변경하고 싶을 때마다 다시 컴파일해야한다는 것입니다. 이것은 매우 지루합니다. 특히 게임 플레이를 조정하고 있습니다.cocos2d에서 게임 개발을위한 "개발자 화면"만들기

일종의 개발자 콘솔 화면 구현이 있습니까? 내 말은 : 내가로드하는 게임 화면 유형을 원합니다. 게임 화면에 등록하는 변수 목록이 들어 있습니다 (스크롤러 포함). 그리고 그 자리에서 이러한 변수를 수정할 수 있기를 원합니다.

나는 그들이 ipad에 그런 스크린을 보여준 WWDC 이벤트에서 프레젠테이션이 있다는 것을 기억합니다. 개발자는 버튼 하나만 누르면 화면과 같은 개발자 콘솔로 게임 스크린이 변경됩니다. 이 프리젠 테이션이 Cocos2D와 아무런 관련이 없다는 것을 알고 있지만 여전히 어떤 모양이나 형태로 이미 존재한다면이 코드를 직접 작성하는 대신 다시 사용하고 싶습니다.

독자적으로 작성해야하지만 실제로 어디에서 시작해야할지 모르겠다. 따라서 도움이 될만한 어떤 도움도 있습니다.

Thx!

+1

깔끔한 아이디어. 나는 항상 여분의 메뉴 항목을 남겼거나 (또는 ​​화면을 함께 선택했다.) 테스트를했다. 그러나 재건없이 즉석에서 간단한 변수 변경을 시도하는 "속임수"를 입력 할 장소는 생각한 적이 없었습니다. – Marvo

답변

4

작년에 Apple의 WWDC에서 Graeme Devine이 개발자 콘솔을 구현하는 방법에 대한 제안 (iTunes University에서 비디오 확인)이있었습니다. 게임 콘솔이라는 예는 example code of WWDC 2010 (232 MB)에 포함되어 있습니다. 편의상 Dropbox의 added a link (57 kb) ~ GameConsole.zip도 있습니다.

+0

+1 감사합니다. 이것이 제가 찾고 있던 것입니다. 나는 이것이 어떻게 든 Cocos2D에 통합 될 수 있는지를 알아봐야 할 것이다. 어떻게 진행되는지 알려 드리겠습니다. 나는이 질문을 조금 더 오랫동안 열어 두겠다. 그러나 다른 사람이 더 나은 응답을하지 않는다면 나는 당신의 대답을 받아 들일 것이다. – Tovi7

0

이 답변은 진부한 답변 이었지만 실행 단계에서 다양한 단계를 테스트하고 플레이어 속성을 수정하는 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는 프로덕션 빌드를 위해이 코드를 컴파일하지 않는 데 사용됩니다.

관련 문제