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

ios - 从 Spritekit 纹理图集中加载纹理的最高效方式

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

我无法在短短几秒钟内弄清楚如何加载我的纹理。怪物需要 20 多秒。

最初,我将动画放在单独的纹理图集中。它们的名称类似于 sprite_002@2x~iphone.png。当它们分开时,我使用了类似于 Apple 文档中的代码:

SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed"monster"];
SKTexture *f1 = [atlas textureNamed"monster-walk1.png"];
SKTexture *f2 = [atlas textureNamed"monster-walk2.png"];
SKTexture *f3 = [atlas textureNamed"monster-walk3.png"];
SKTexture *f4 = [atlas textureNamed"monster-walk4.png"];
NSArray *monsterWalkTextures = @[f1,f2,f3,f4];

我的代码是:

let names = myAtlas.textureNames as [String];
for name in names {
   myTextureArray.append(myAtlas.textureNamed(name as String));
}

对于 6 个不同纹理图集中的 6 个动画,每个 250 帧,加载大约需要 6 秒。

我能够消除 60-70% 的这些帧并将所有内容都塞进一个纹理图集中,但现在我无法让它在合理的时间范围内加载。

我一直在尝试以下代码:

    for i in 1...124 {
        let name = String(format: "sprite_%03d", i);
        let texture = imagesAtlas.textureNamed(name);
        spriteTextures.append(texture);
    }

大多数游戏 iPhone 游戏没有 20 秒的加载时间,所以我知道我在这里做错了。



Best Answer-推荐答案


您的加载时间将取决于您的 map 集的大小。因此,如果您碰巧拥有大量它们并且它们很大,则需要一些时间。

我以前在这里看到过这类问题的变体。

我的建议是真正改变您解决问题的方法。随着时间的推移,这会分解工作负载并在后台进行。这就是为什么许多游戏都有加载屏幕的原因。

根据您的游戏,您可能会更加偷偷摸摸地在游戏运行时在后台加载纹理(或任何相关 Assets )。通常,您不需要在游戏开始时加载所有纹理。

当我制作我的游戏时,我做的第一件事就是创建一个后台加载器,如果我还没有的话。然后我围绕 Assets 异步加载的前提构建游戏。

20 秒相当长。但是根据您的描述,这听起来需要相当长的时间。

关于ios - 从 Spritekit 纹理图集中加载纹理的最高效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28785179/

回复

使用道具 举报

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

本版积分规则

关注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