首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpriteKit有时无法加载SKTexture

SpriteKit有时无法加载SKTexture
EN

Stack Overflow用户
提问于 2014-12-04 11:12:48
回答 1查看 705关注 0票数 2

我目前有一个奇怪的间歇性问题与SpriteKit和SKTexture预压。我有多个图像数组,我以以下格式预加载这些图像:

代码语言:javascript
复制
- (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来分割纹理加载,它确保在开始下一次加载之前加载上一组图像,以尝试并停止过多的并发加载。这加快了进程,但我仍然看到这个间歇性的问题。

有没有其他人见过这个,或者知道是什么原因造成的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 12:33:51

在我的经验中,一个常见的原因是当您不等待完成处理程序被调用时。例如,在这样的情况下,"image“是预加载的映像之一,这可能是错误的来源:

代码语言:javascript
复制
[self loadTexturesWithNames:names];
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithImageNamed:@"image"];

当然,如果只在loadTexture方法中创建sprite节点和纹理,那么应该很好。除非您执行其他后台任务,或者在后台运行loadTextureWithNames选择器(单独的线程)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27292575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档