gpt4 book ai didi

ios - 如何在 Swift 中每隔 X 秒高效地调用一个函数

转载 作者:可可西里 更新时间:2023-11-01 01:37:52 27 4
gpt4 key购买 nike

我正在玩一款使用 spriteKit 和 Swift 的 iOS 游戏,但我在更新角色位置时遇到了问题。我的计划是用一个简单的 (x,y) 坐标显示屏幕顶部的玩家位置,并让它每秒更新几次。我能够使用以下代码实现这一点:

updatePostimer = NSTimer.scheduledTimerWithTimeInterval(0.10, target: self, selector: Selector("updatePosition"), userInfo: nil, repeats: true)

问题是每次执行该方法时,屏幕上都会出现明显的滞后。 updatePosition方法如下:

func updatePosition(){
positionLabel?.text = "X: " + String(Int(scene.player.position.x)) + " Y: " + String(Int(scene.player.position.y))
}

我不明白为什么这是滞后的。我会在 GameScene 更新方法中放入必要的代码,但由于这不是游戏的关键部分,我试图在不同线程的计时器上运行此方法。如果有人对如何在不同的线程(主线程除外)上有效地运行此方法,或者如何让它每秒执行几次而没有帧延迟有任何建议,我肯定会很感激:)

最佳答案

您应该利用 SpriteKit 的运行循环。 SpriteKit 将调用:

func update(currentTime: NSTimeInterval)

在每个渲染 channel 之前,您可以根据需要更新任何游戏状态。有关详细信息,请参阅 SKScene Class Reference .不建议使用 NSTimer,因为计时器会不均匀地触发(即每当系统发现它方便时)。对于游戏状态更改,您希望此类更改与渲染引擎同步。有关 sprite 套件运行循环的讨论,请参阅 here以及为什么 NSTimer 不适用于动画,请参阅 here .

关于ios - 如何在 Swift 中每隔 X 秒高效地调用一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com