版本:Cocos2D V3.4、Xcode 7.2.1、SpriteBuilder 1.4.9。
您可以下载我的项目here .它是用 SpriteBuilder 创建的。
在 CCPhysicsNode 上启用调试绘制会导致崩溃:
CCPhysicsNode *_physicsWorld;
_physicsWorld = [CCPhysicsNode node];
_physicsWorld.gravity = ccp(0,0);
_physicsWorld.debugDraw = YES;//if debugDraw set to NO, crash will not occur, it happens only when its set to YES
_physicsWorld.collisionDelegate = self;
[_scene addChild:_physicsWorld];
错误:
Assertion failure in -[CCRenderStateGL initWithBlendMode:shader:shaderUniforms:copyUniforms:]
我将物理体添加到 CCSprite 的代码:
_PlayerSprite.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){CGPointZero, _PlayerSprite.contentSize} cornerRadius:0]; // 1
_PlayerSprite.physicsBody.collisionGroup = @"playerGroup"; // 2
[_PhysicsWorld addChild:lobjPlayerSprite
z:Z_ORDER_PLAYERS];
然后代码在 CCRendererBasicTypes initWithBlendMode
处崩溃:
-(instancetype)initWithBlendMode:(CCBlendMode *)blendMode shader:(CCShader *)shader shaderUniforms:(NSDictionary *)shaderUniforms copyUniforms:(BOOL)copyUniforms
crashes here:-
NSAssert(shader, @"CCRenderState: Shader is nil");
最佳答案
您的项目是使用自 2015 年 4 月以来未更新的 SpriteBuilder 创建的。SpriteBuilder 附带的 Cocos2D 版本是在 Xcode 7 之前发布的,并且不包括一些针对 Xcode 7 和 iOS 9 的必要修复。您可以阅读更多关于这个here .
要解决此问题,您需要手动更新 Cocos2D。按照上一个链接中的步骤或使用 this作为引用(它更直观)。
关于ios - 在 CCPhysicsNode 上启用调试绘制会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36003912/