Ошибка 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. Поэтому текстуры не могут быть созданы.

Настоящая проблема - вводящее в заблуждение сообщение об ошибке.

Другие вопросы по тегам