编辑 5:优化级别构建设置:
编辑 4:我试图将构建配置全部更改为“调试”,然后运行“测试”。奇怪的是,它并没有崩溃大约 20 次(我一直在加载和卸载具有不同资产的各种 GameScenes)。在第 21 次(即使在统计上不相关),我正要考虑它可能不再崩溃但它崩溃了。摘要仍然不可用,所以我想知道我做得对还是有其他问题。这是构建配置和崩溃报告:
编辑 3:重要的是,这个错误只发生几次,比如 6/7 中的 1 次运行,所以我发现很难隔离它。
我在理解哪个纹理让这个 NSAssert 失败时遇到了一些严重的问题。我尝试了几种方法,但都没有奏效(或者很可能只是我有点太愚蠢了:))。
在调试器中,我可以看到 GLuint 信息。在互联网上阅读我发现这是一种引用框架(一种指针)的方法。
我认为应该有一种方法可以从 batchNode plist 文件中检索框架名称,并且想知道这个 GLuint 编号是否可以以某种方式对应于 plist 文件中框架的顺序。
NSAssert( !batchNode_ || texture.name == batchNode_.texture.name , @"CCSprite: Batched sprites should use the same texture as the batchnode");
/** texture name */
@property(nonatomic,readonly) GLuint name;
我尝试了这些方法,但它们捕获了所有情况:
//From CCSprite.m
-(void) setTexture:(CCTexture2D*)texture
{
if(!batchNode_ || texture.name != batchNode_.texture.name)
{
CCLOG(@""); // I added a debug here but it catches all cases..
NSAssert( !batchNode_ || texture.name == batchNode_.texture.name , @"CCSprite: Batched sprites should use the same texture as the batchnode");
}
编辑:我知道这有点疯狂,但我尝试在 CCTexture2D 中初始化 fileName,因为我似乎无法正确初始化它:
- (id) initWithString:(NSString*)string dimensions:(CGSize)dimensions hAlignment:(CCTextAlignment)hAlignment vAlignment:(CCVerticalTextAlignment) vAlignment lineBreakMode:(CCLineBreakMode)lineBreakMode font:(UIFont*)uifont
{
NSAssert( uifont, @"Invalid font");
fileName=string;//TODO: Remove
.....
}
上面的一个是我能够修改的唯一 initWithString 。我无法在另一个中修改 fileName 属性:
#elif defined(__CC_PLATFORM_MAC)
- (id) initWithString:(NSString*)string dimensions:(CGSize)dimensions hAlignment:(CCTextAlignment)hAlignment vAlignment:(CCVerticalTextAlignment)vAlignment attributedString:(NSAttributedString*)stringWithAttributes
编辑 2: 我试图将 fileName 分配为:
fileName = [string copy];
但它仍然给我提供了不可用的摘要,如此处报道的:
该问题似乎发生在动画更新期间的 setTexture 中,但文件名似乎最初是错误的。
这就是我在 CCTexture2D 中声明该属性的方式:
@property(nonatomic, copy) NSString* fileName; //TODO Remove