简而言之:
有没有比将所有函数都放在更新函数中更能减少“延迟”和内存滥用的长时间运行大型函数的更好方法?
完整问题
我目前正处于使用 iOS Swift 和 SpriteKit 开发我的第一个游戏应用程序的最后阶段。我遇到的更大问题之一是滞后/延迟。 Time Profiler Instrument 指出我的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
我的问题是:有没有更好的方法来长时间运行大型函数,比将它们全部放在更新函数中更不“延迟”和内存滥用?
谢谢
最佳答案
可能会根据用户交互改变方向或位置的项目需要更新。没有办法解决这个问题。
对于背景动画之类的项目,您可以(并且应该)在开始时设置一次并将它们放入无限动画循环中,而不是每次更新都手动更新位置。这应该会有很大帮助。
关于ios - 在 Swift 中使用更新函数的更清洁(更好)替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500797/