编辑(附加测试后的较短版本): 我只添加了:
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:winSize.width height:winSize.height];
到我的游戏项目中的BulletCache(有一个 GameScene,其中添加了 BulletCache 的实例),现在应用程序在尝试加载游戏场景实例时确实崩溃了(在此之前我没有遇到此崩溃的问题)。
注意:我在 CCRenderTexture 的 init 方法中添加了一个断点,它似乎运行顺利,它必须是 init 之后的东西。
相反,我在 GameScene 的 init 方法中尝试了相同的方法,它不会使应用程序崩溃。同样,如果我将它添加到一个空的 cocos2d-ios helloworld 模板项目中。
因此,在 cocos2d-ios helloworld 模板中,我做了一个额外的测试思考,看看有一个 batchnode 和一个 CCRenderTexture 实例是否存在冲突,并在 helloworldlayer.m init 方法的末尾添加了以下内容:
CCSpriteFrameCache* frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
[frameCache addSpriteFramesWithFile:@"art1-hd.plist"];
CCSpriteBatchNode* spriteBatch = [CCSpriteBatchNode batchNodeWithFile:@"art1-hd.png"];
[self addChild:spriteBatch];
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:winSize.width height:winSize.height];
[self addChild:rt];
没有崩溃。
关于如何解决这个问题,我没有多少胶水。
编辑:删除了我提到的一个像素完美碰撞项目的原始问题,在那里我找到了 CCRenderTexture