简而言之:
除了将所有内容放在更新函数中之外,是否有更好的方式可以运行长时间的大型函数并减少内存占用和延迟问题?
完整问题:
我目前正在使用iOS Swift和SpriteKit开发我的第一个游戏应用程序的最后阶段。我遇到了一个比较大的问题,即游戏存在延迟/卡顿现象。 Time Profiler工具指出我的override func update
占用了大量的内存和时间。我的更新函数包括以下内容:
override func update(currentTime: CFTimeInterval) {
if hasStarted {
// Character
updateCharacterPosition()
updateJumpMotion()
// Blocks
blockRunnerDebug()
// Wave
debugRunningBarPosition()
// Game Engine
gameEngine()
debugGameEngine()
}
// Update Scenery
updateScenery()
}
你可以看到它有很多功能。其中大部分运行背景动画,如水、云或人物跳跃动画。
示例:
// Move y
self.cloud01.position.y = self.cloud01.position.y + (CGFloat(createSinWave(0.5, b: b, angle: angle))) * 0.3
self.cloud02.position.y = self.cloud02.position.y + (CGFloat(createSinWave(0.5, b: b, angle: angle))) * 0.3
我的问题是:是否有比将所有内容放在update函数中更好的方法来运行长时间的大型函数,以减少“卡顿”和内存滥用?谢谢。
SKAction.runBlock
吗? - Nick GroeneveldrunAction(SKAction.repeatActionForever(SKAction.runBlock(doAction)))
- Jeremiah