有没有一种方法在Swift中获取FPS值?
不,我不是指改变frameInterval,也不是指...
skView.showsFPS = true
我希望能获取fps,以便在游戏开始之前,我的应用程序等待fps达到60。由于某种原因,我的应用程序偶尔会在40fps处“卡住”,停留5秒钟,然后慢慢攀升回到60。这通常发生在我召唤ControlCenter时。
有没有一种方法在Swift中获取FPS值?
不,我不是指改变frameInterval,也不是指...
skView.showsFPS = true
我希望能获取fps,以便在游戏开始之前,我的应用程序等待fps达到60。由于某种原因,我的应用程序偶尔会在40fps处“卡住”,停留5秒钟,然后慢慢攀升回到60。这通常发生在我召唤ControlCenter时。
var lastUpdateTime: TimeInterval = 0
func update(currentTime: TimeInterval) {
let deltaTime = currentTime - lastUpdateTime
let currentFPS = 1 / deltaTime
print(currentFPS)
lastUpdateTime = currentTime
}
有另一种方法可以获取视图本身的FPS,而不受呈现哪个场景的影响,使用SKViewDelegate
(从开发者文档中获取,只需添加FPS属性):
class ViewController: NSViewController, SKViewDelegate {
let spriteView: SKView = SKView()
override func viewDidLoad() {
self.spriteView.delegate = self // Set the view's delegate to the ViewController.
}
let targetFps: TimeInterval = 60 // Set to your preferred fps
var lastRenderTime: TimeInterval = 0
var fps: TimeInterval = 0.0 // Access this property to get the view's fps
// Delegate method:
public func view(_ view: SKView, shouldRenderAtTime time: TimeInterval) -> Bool {
if time - lastRenderTime >= 1 / targetFps { // Check if the scene should render.
// Determine the fps with the time since the last render:
self.fps = 1 / (time - lastRenderTime)
// Set the last render time to the current time:
self.lastRenderTime = time
// Let scene know that it should render the next frame.
return true
}
else {
return false
}
}
}
gameView.showsStatistics = true
游戏视图.显示统计信息 = 真