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

ios - SpriteKit 游戏中的帧速率极慢

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

我有一个在 SpriteKit 中构建的游戏,我偶尔会开发它。当 iOS 8 仍然是最新版本的 iOS 时,我就开始研究它。那时,它总是以 60fps 或几乎(在物理设备上)运行。然而,从 iOS 9 开始,现在在 iOS 10 上,游戏在我的 iPhone 5 上的运行速度只有区区 12fps。实际上它通常在模拟器上运行得更快(13 - 14fps),这是闻所未闻的。

我使用 Instruments 进行了分析,似乎某些缓慢来自应用程序每帧执行两次枚举。他们在这里:

-(void)moveBackground
{

    [self enumerateChildNodesWithName"stars" usingBlock:^(SKNode *node, BOOL *stop)
    {
        SKSpriteNode *bg  = (SKSpriteNode *)node;
        CGPoint bgVelocity = CGPointMake(0, -150); //The speed at which the background image will move
        CGPoint amountToMove = CGPointMultiplyScalar (bgVelocity,0.08);
        bg.position = CGPointAdd(bg.position,amountToMove);
        if (bg.position.y <= 0)
        {
            bg.position = CGPointMake(bg.position.x, bg.position.y + bg.size.height/2);
        }
    }];

    [self enumerateChildNodesWithName"opbg" usingBlock:^(SKNode *node, BOOL *stop)
     {
         SKSpriteNode *opbg  = (SKSpriteNode *)node;
         CGPoint bgVelocity = CGPointMake(0, -150); //The speed at which the background image will move
         CGPoint amountToMove = CGPointMultiplyScalar (bgVelocity,0.08);
         opbg.position = CGPointAdd(opbg.position,amountToMove);
         if (opbg.position.y <= 0)
         {
             [self.opbg removeFromParent];
         }
     }];
}

这些枚举将起始背景移动到屏幕外,然后将其从父级移除,并在完成后循环常规背景。有没有更有效的方法来做到这一点?此外,是否有另一种在不损失任何质量的情况下优化应用程序的方法?我的图像相对较大(背景为 1080x3840),但我不确定是否可以使用较小的图像,然后在不损失质量的情况下放大它们。

感谢任何提高我的帧率的帮助,如果需要,我可以显示更多代码。

谢谢



Best Answer-推荐答案


iOS 8 和 9 之间最大的变化是增加了一个摄像头节点:

https://developer.apple.com/reference/spritekit/skcameranode

还有臭名昭著的性能下降。

Apple 论坛上出现了一连串关于 iOS 9 性能的投诉。Apple 没有及时和令人满意的方式进行沟通。由于缺乏有意义的修复和解释,许多 SpriteKit 用户和潜在用户流失了。

在您的情况下,改用相机进行视差可能会恢复一些性能。

这里有一些关于性能的问题正在讨论,所以你可能会看到是否有人在做类似的事情:

https://forums.developer.apple.com/thread/14487

https://forums.developer.apple.com/thread/30651

关于ios - SpriteKit 游戏中的帧速率极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819721/

回复

使用道具 举报

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

本版积分规则

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