Ошибка TextureCache от Cocos2d при интеграции в приложение UIKit
Попытка интегрировать представление Cocos2d в приложение UIKit. Я получаю эту ошибку:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Do not initialize the TextureCache before the Director'
Мне кажется, что директор инициализируется в первую очередь.
AppDelegate didFinishLaunching:
// initialize cocos2d director
CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector];
director.wantsFullScreenLayout = NO;
director.projection = kCCDirectorProjection2D;
director.animationInterval = 1.0 / 60.0;
director.displayStats = YES;
[director enableRetinaDisplay:YES];
NSArray* subviews = self.viewController.view.subviews;
for (int i = 0; i < subviews.count; i++)
{
UIView* subview = [subviews objectAtIndex:i];
if ([subview isKindOfClass:[CCGLView class]])
{
director.view = (CCGLView*)subview;
break;
}
}
View Controller viewDidLoad:
CCDirectorIOS* director = (CCDirectorIOS*)[CCDirector sharedDirector];
if (director.runningScene == nil)
{
[director runWithScene:[GameLayer scene]];
}
[director startAnimation];
И GameLayer:
+(id) scene {
CCScene *scene=[CCScene node];
CCLayer* layer=[GameLayer node];
[scene addChild:layer];
return scene;
}
-(id) init {
if ((self=[super init])) {
CCSprite *test = [CCSprite spriteWithFile:@"test.png"];
[self addChild:test];
CGSize size = [CCDirector sharedDirector].winSize;
test.position = CGPointMake(size.width / 2, size.height / 2);
}
return self;
}
Что я делаю неправильно?
1 ответ
Решение
Теперь я вижу это: в didFinishLaunching вы забыли создать экземпляр CCGLView и назначить его CCDirector. Ваш директор работает без представления и не имеет контекста OpenGL. Поэтому текстуры не могут быть созданы.
Настоящая проблема - вводящее в заблуждение сообщение об ошибке.