• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - SpriteKit 有时无法加载 SKTexture

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:16:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我目前在 SpriteKit 和 SKTexture 预加载方面遇到了一个奇怪的间歇性问题。我有多个图像数组,我按以下格式预加载:

- (NSDictionary *)loadTexturesWithNamesNSArray *)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 拆分纹理加载,确保在开始下一组图像之前加载前一组图像,以尝试停止过多的并发加载。这加快了进程,但我仍然看到这个间歇性问题。

有没有其他人看到过这种情况,或者知道是什么原因造成的?



Best Answer-推荐答案


根据我的经验,一个常见的原因是您没有等待调用完成处理程序。例如,在“图像”是预加载的图像之一的情况下执行此类操作可能是错误的来源:

[self loadTexturesWithNames:names];
SKSpriteNode* sprite = [SKSpriteNode spriteNodeWithImageNamed"image"];

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

关于ios - SpriteKit 有时无法加载 SKTexture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292575/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap