我已經問過類似的東西,但我無法弄清楚如何調試。這是question。Cocos2d和SpriteBatchNode:無法識別哪個精靈幀導致斷言失敗
我加了一些異常處理程序(捕獲所有的Objective-C)例外,這就是什麼,我看到的結果是:
的問題是用的SetTexture方法,它斷言失敗,驗證需要顯示的紋理名稱是否與當前sprite批處理節點中的紋理名稱相同。
發生這種情況時,試圖用另一個替換一個場景,但不會一直髮生。這與新場景有關,因爲我試圖通過從遊戲的另一部分調用替換來「隔離」問題,但它仍然會帶來麻煩。
在遊戲場景中,我有幾個精靈表和精靈批處理節點,但由於我無法隔離精靈表ID,所以我無法理解哪個精靈幀會給我帶來問題,不明白爲什麼這種情況有時只會發生
我想:
- 瞭解哪些前景幀的名字給我的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;
}
唯一的'壞'問題是沒有人問。不要擔心這裏的'親密'愛好者太多:很多教條浮動。 – YvesLeBorg 2013-02-20 13:22:06
@ YvesLeBorg謝謝Yves,我感謝你在去年在這個論壇上給予我的幫助和鼓勵。它有很大的幫助:) – mm24 2013-02-22 23:45:37