У меня очень простая игра с использованием Xcode v4.2.1, Cocos2d v5.0.1. Я пробовал оба компилятора в Xcode (LLVM GCC 4.2 и Apple LLVM 3.0. Есть ли предпочтение ??). На экране игры есть кнопка UIKit, которая предоставляет пользователю экран настроек / опций Interface Builder (nib) для настройки. игры немного. Все это основано на том, что я узнал из урока Рэя Вендерлиха (http://www.raywenderlich.com/4817/how-to-integrate-cocos2d-and-uikit).
После того, как пользователь внес свои изменения, они возвращаются в игру, и изменения вступают в силу.
В симуляторе все работает так, как я хочу, однако при тестировании игры на iPad в окне отладки появляются следующие ошибки:
2012-01-27 18:25:27.305 BonkBonk[1082:707] failed to call context
2012-01-27 18:25:27.310 BonkBonk[1082:707] cocos2d: surface size: 1024x768
2012-01-27 18:25:27.316 BonkBonk[1082:707] Failed to make complete framebuffer object 8cdd
OpenGL error 0x0506 in -[EAGLView swapBuffers]
OpenGL error 0x0506 in -[EAGLView swapBuffers]
OpenGL error 0x0506 in -[EAGLView swapBuffers]
Ошибки OpeenGl продолжаются бесконечно.
Я использую функцию viewWillAppear, чтобы зафиксировать возврат с экрана настроек / опций, чтобы я мог передать новые настройки игровому слою. Если я закомментирую этот код, проблема исчезнет, однако я не смог получить новые пользовательские настройки для игрового слоя.
Вот код:
- (void) viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:animated];
//CCScene *scene = [[CCDirector sharedDirector] runningScene];
CCScene *scene = [BonkBonkLayer scene];
id layer = [scene getChildByTag:1];
[layer userSettings];
[super viewWillAppear:animated];
}
Закомментированная строка // CCSene * scene ... была еще одной неудачной попыткой получить объект слоя со сцены, чтобы я мог вызвать метод userSettings, где игровой слой затем мог бы ассимилировать его в игру.