0

编辑 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
4

0 回答 0