更清洁(更好)替代在Swift中使用更新功能

时间:2015-11-03 13:49:11

标签: ios swift sprite-kit

简而言之:

是否有一种更好的方法可以长时间运行大型功能,而不是将它们全部放入更新功能中,从而减少“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

我的问题是:是否有一种更好的方法可以长时间运行大型功能,而不是将它们放在更新功能中,而不是将其全部放入更新功能?

由于

1 个答案:

答案 0 :(得分:2)

根据用户交互可能改变方向或位置的项目需要更新。没有办法解决这个问题。

对于像背景动画这样的项目,您可以(并且应该)在开头设置它们并将它们放入无限动画循环中,而不是每次更新时手动更新位置。这应该会有很大帮助。