我目前有一个奇怪的间歇性问题与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:错误加载图像资源:
这不会发生在任何一组特定的图像上,只是随机的。所以有时候玩家会加载的很好,而其他的则不会。这会是内存问题吗?我使用一个_iCounter来分割纹理加载,它确保在开始下一次加载之前加载上一组图像,以尝试并停止过多的并发加载。这加快了进程,但我仍然看到这个间歇性的问题。
有没有其他人见过这个,或者知道是什么原因造成的?
发布于 2014-12-04 12:33:51
在我的经验中,一个常见的原因是当您不等待完成处理程序被调用时。例如,在这样的情况下,"image“是预加载的映像之一,这可能是错误的来源:
[self loadTexturesWithNames:names];
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithImageNamed:@"image"];当然,如果只在loadTexture方法中创建sprite节点和纹理,那么应该很好。除非您执行其他后台任务,或者在后台运行loadTextureWithNames选择器(单独的线程)。
https://stackoverflow.com/questions/27292575
复制相似问题