代码之家  ›  专栏  ›  技术社区  ›  soleil

集成到UIKit应用程序时,Cocos2d出现TextureCache错误

  •  1
  • soleil  · 技术社区  · 12 年前

    尝试将Cocos2d视图集成到UIKit应用程序中。我收到这个错误:

    Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Do not initialize the TextureCache before the Director'
    

    在我看来,主任是首先被初始化的。

    AppDelegate未完成启动:

    // 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;
            }
        }
    

    查看控制器视图DidLoad:

    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 回复  |  直到 12 年前
        1
  •  2
  •   CodeSmile Paul Beusterien    12 年前

    我现在看到了:在didFinishLaunching中,您忘记创建CCGLView实例并将其分配给CCDirector。您的控制器在没有视图的情况下运行,并且没有OpenGL上下文。因此,无法创建纹理。

    真正的问题是误导性的错误信息。