Я уже спрашивал что-то подобное, но я не могу понять, как правильно это отлаживать. Это вопрос.
Я добавил несколько обработчиков исключений (перехватывает все исключения Objective-C), и это результат того, что я вижу:
Проблема связана с методом setTexture, и он не выполняет утверждение, проверяющее, совпадает ли имя текстуры, которое необходимо отобразить, с именем в текущем узле пакета спрайтов.
Это происходит при попытке заменить одну сцену другой, но не всегда. Это связано с новой сценой, поскольку я пытался «изолировать» проблему, вызвав замену из другой части игры, и это все еще вызывает проблемы.
В игровой сцене у меня есть пара листов спрайтов и узлов пакета спрайтов, но, поскольку мне не удается изолировать идентификатор листа спрайтов, я не могу понять, какой кадр спрайта вызывает у меня проблему, а также я не понимаю, почему это бывает только иногда.
Я бы хотел:
- понять, какое имя кадра спрайта дает мне AssertionFailure
- понять, к какому листу спрайтов он принадлежит
Это должно помочь мне понять, является ли это проблемой именования или это связано с чем-то другим.
Надеюсь не заморачиваться с этим вопросом..
РЕДАКТИРОВАТЬ: я попробовал ответить, но я не могу прочитать информацию «имя файла», вот что отладчик говорит «Сводка недоступна»:
Вот как я создаю свойство имени файла:
/** 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;
}