简而言之:
是否有一种更好的方法可以长时间运行大型功能,而不是将它们全部放入更新功能中,从而减少“lagy”和内存滥用?
完整问题
我目前正在使用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
我的问题是:是否有一种更好的方法可以长时间运行大型功能,而不是将它们放在更新功能中,而不是将其全部放入更新功能?
由于
答案 0 :(得分:2)
根据用户交互可能改变方向或位置的项目需要更新。没有办法解决这个问题。
对于像背景动画这样的项目,您可以(并且应该)在开头设置它们并将它们放入无限动画循环中,而不是每次更新时手动更新位置。这应该会有很大帮助。