2
我目前有SpriteKit和SKTexture預加載一個奇怪的間歇性問題。我有圖像的多個陣列,這是我在預裝以下格式:SpriteKit有時無法加載SKTexture
- (NSDictionary *)loadTexturesWithNames:(NSArray *)aNames
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSMutableArray *textureArray = [NSMutableArray array];
for (NSString *textureName in aNames)
{
SKTexture *texture = [SKTexture textureWithImageNamed:textureName];
if (texture)
{
[textureArray addObject:texture];
[dict setObject:texture forKey:textureName];
}
}
[SKTexture preloadTextures:textureArray withCompletionHandler:^{
_iCounter++;
[self loadTextures];
}];
return dict;
}
這工作的時間細90%,但偶爾我得到以下錯誤:
SKTexture: Error loading image resource:
這不會發生上任何特定的圖像集,只是隨機。所以有時玩家會加載罰款,其他人不會。這可能是一個記憶問題嗎?我使用_iCounter分割加載的紋理,確保在開始下一個圖像之前加載前一組圖像,以嘗試並停止太多的併發加載。這加快了這個過程,但我仍然看到這個間歇性問題。
有沒有人看過這個,或者有什麼想法可能會導致這種情況?
嗨,當預加載紋理是有開銷存儲引用他們像我目前這樣做?即簡單地加載紋理然後像你一樣調用[SKSpriteNode spriteNodeWithImageNamed:@「image」]會更好嗎?我不使用任何紋理,直到所有的圖像已經預先加載完畢,但是通過完全分離這個調用來檢查這不是問題。 – 2014-12-04 13:26:05
當loadTexturesWithNames:方法返回時,你的textureArray會被釋放,而數組也不會被傳遞到loadTexture中。這可能實際上使預加載無效,取決於Sprite Kit中如何實現紋理緩存。 – LearnCocos2D 2014-12-04 13:29:19
我認爲你可能已經擊中了頭部,我把它存儲在一個整體保留的數組中,現在它似乎正常加載。謝謝您的幫助。 – 2014-12-05 11:26:47