Создание «экрана разработчика» для разработки игр в cocos2d - PullRequest
4 голосов
/ 29 апреля 2011

В настоящее время я разрабатываю игру для iPhone с использованием API Cocos2D. Все идет хорошо. Однако у меня есть одна проблема: мне приходится перекомпилировать каждый раз, когда я хочу изменить свои переменные. Это очень утомительно, особенно сейчас, когда я настраиваю геймплей.

Есть ли какая-нибудь реализация для своего рода экрана консоли разработчика? Я имею в виду: я хочу иметь тип загружаемого игрового экрана, который содержит список переменных, которые я регистрирую на игровом экране (с помощью скроллера). И я хочу иметь возможность изменять эти переменные на месте.

Я помню, как была презентация на мероприятии WWDC, в которой они показали такой экран на ipad. Разработчик просто нажмет кнопку, и экран игры изменится на консоль разработчика, подобную экрану. Я знаю, что эта презентация не имеет ничего общего с Cocos2D, но, тем не менее, если она уже существует в той или иной форме, я бы с удовольствием повторно использовал этот код вместо того, чтобы писать его самостоятельно.

Хотя, если бы мне пришлось написать это самостоятельно, я бы не знал, с чего начать. Так что любая помощь там будет признательна.

Thx!

Ответы [ 2 ]

4 голосов
/ 29 апреля 2011

В прошлом году на WWDC компании Apple Грэм Девайн (Graeme Devine) высказал несколько советов о том, как реализовать такую ​​консоль для разработчиков (см. Видео в iTunes University).Пример с именем Game Console включен в пример кода WWDC 2010 (232 МБ) .Я также добавил ссылку (57 КБ) на GameConsole.zip из DropBox, для удобства.

0 голосов
/ 29 октября 2012

Это ответ с серьезным задним числом, но мы реализовали консоль разработчика для Mega Run , чтобы протестировать различные этапы и изменить свойства игрока во время выполнения.Реализация состояла в том, чтобы нажать в верхнем левом углу экрана в любой точке игры, чтобы вызвать консоль.Оттуда вы можете изменить в соответствии с вашими потребностями.Каркасом реализации было переопределение EAGLView и самостоятельная обработка обратного вызова touchesBegan touch.Вот реализация ...

-(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 используется, чтобы не компилировать этот код для производственных сборок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...