Cocos2d und SpriteBatchNode: Kann nicht identifizieren, welcher Sprite-Frame ein Fehlschlagen einer Zusicherung verursacht

Ich habe bereits etwas Ähnliches gefragt, aber ich kann nicht richtig herausfinden, wie ich das debuggen soll. Das ist dasFrage.

Ich habe einige Exceptions-Handler hinzugefügt (fängt alle Objective-C-Exceptions ab) und das ist das Ergebnis dessen, was ich sehe:

Das Problem liegt bei der setTexture-Methode und schlägt bei der Überprüfung fehl, ob der anzuzeigende Texturname mit dem Namen im aktuellen Sprite-Batch-Knoten identisch ist.

Dies passiert, wenn versucht wird, eine Szene durch eine andere zu ersetzen, dies geschieht jedoch nicht immer. Es hat mit der neuen Szene zu tun, da ich versucht habe, das Problem zu "isolieren", indem ich das Ersetzen aus einem anderen Teil des Spiels aufgerufen habe, und es gibt immer noch Probleme.

In der Spielszene habe ich ein paar Sprite-Sheets und Sprite-Batch-Nodes, aber da ich es nicht schaffe, eine Sprite-Sheet-ID zu isolieren, kann ich nicht verstehen, welcher Sprite-Frame mir das Problem bereitet, und auch nicht, warum passiert nur manchmal.

Ich würde gerne:

Verstehe, welcher Sprite-Frame-Name mir AssertionFailure gibtVerstehe, zu welchem ​​Sprite Sheet es gehört

Dies sollte mir helfen zu verstehen, ob es sich um ein Namensproblem handelt oder ob dies mit etwas anderem zu tun hat.

Ich hoffe, mit dieser Frage nicht zu lahm zu sein.

BEARBEITEN: Ich habe die Antwort ausprobiert, kann aber die 'fileName'-Informationen nicht lesen. Der Debugger gibt folgende Meldung aus: "Zusammenfassung nicht verfügbar":

So erstelle ich die Eigenschaft filename:

/** TMP: Bug solving filename */
@property (copy) NSString *fileName;

-(id) initWithTexture:(CCTexture2D*)texture rectInPixels:(CGRect)rect rotated:(BOOL)rotated offset:(CGPoint)offset originalSize:(CGSize)originalSize
{
    if( (self=[super init]) )
    {
        self.fileName = [NSString stringWithFormat:@"GLUINT texture name: %i", texture.name];
        self.texture = texture;
        rectInPixels_ = rect;
        rect_ = CC_RECT_PIXELS_TO_POINTS( rect );
        offsetInPixels_ = offset;
        offset_ = CC_POINT_PIXELS_TO_POINTS( offsetInPixels_ );
        originalSizeInPixels_ = originalSize;
        originalSize_ = CC_SIZE_PIXELS_TO_POINTS( originalSizeInPixels_ );
        rotated_ = rotated;
    }
    return self;
}

-(id) initWithTextureFilename:(NSString *)filename rectInPixels:(CGRect)rect rotated:(BOOL)rotated offset:(CGPoint)offset originalSize:(CGSize)originalSize
{
    if( (self=[super init]) )
    {
        self.fileName = fileName; //TMP
        texture_ = nil;
        textureFilename_ = [filename copy];
        rectInPixels_ = rect;
        rect_ = CC_RECT_PIXELS_TO_POINTS( rect );
        offsetInPixels_ = offset;
        offset_ = CC_POINT_PIXELS_TO_POINTS( offsetInPixels_ );
        originalSizeInPixels_ = originalSize;
        originalSize_ = CC_SIZE_PIXELS_TO_POINTS( originalSizeInPixels_ );
        rotated_ = rotated;
    }
    return self;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage