ios - 在 Swift 中使用更新函数的更清洁(更好)替代方法

标签 ios swift sprite-kit

简而言之:

有没有比将所有函数都放在更新函数中更能减少“延迟”和内存滥用的长时间运行大型函数的更好方法?

完整问题

我目前正处于使用 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/

相关文章:

ios - 排行榜是游戏必须接受的吗?

iphone - 通过ios发送附件到salesforce native rest sdk

ios - Swift 表格 View 单元格不显示部分背景图像

swift - Xcode 无效的 Swift 可解析输出(格式错误的 JSON)

ios - 使用 Spritekit 使循环以随机间隔执行

ios - 核心数据对象不会被删除

ios - AVPlayer seektotime with Pangesturerecognizer

ios - 无法在后台使用应用程序保持 GPS 事件,或在前台或后台使用应用程序读取位置

swift - 如何在 SpriteKit 中改变物体的质量以随着重力下降得更慢

swift - 了解 SpriteKit CollisionBitMask