gpt4 book ai didi

ios - 如何同时获取更新(currentTime :) function uses?(调用前)

转载 作者:搜寻专家 更新时间:2023-10-30 22:10:24 26 4
gpt4 key购买 nike

问题:SKScene 中的update(currentTime:) 函数在每一帧都使用currentTime 参数调用。我想知道如何在不使用 update 函数的情况下从 update(currentTime:) 使用的同一来源获取时间。我只找到了不同的 CFAbsoluteTimeGetCurrent()

原因:要计算 timeSinceLastUpdate,您需要一个名为 timeOfLastUpdate 的实例变量。要实现 timeOfLastUpdate,您需要在第一次更新之前将其设置为任意值,这会使 timeSinceLastUpdate 的第一次计算不正确。你可以有一个简单的 if 语句来检测这个或使用可选但这是一个不需要的分支,如果我只是在 didMoveToView(view:) 中设置 timeOfLastUpdate 就可以避免。这就是我想要做的。

最佳答案

第一个 timeSinceLastUpdate 将始终与其余的不同。通常,一个人存储来自前一个 update 调用的绝对时间,并从当前调用的时间中减去它以获得 timeSinceLastUpdate。如果之前的时间不存在,因为你是第一次通过渲染循环 - 它被设置为零或无穷大或负数或你初始化它的任何标记值,只需设置你的 timeSinceLastUpdate为入门的一些名义值(value)。像你的帧间隔(如果你想要 60 fps 则为 16.67 毫秒)这样的东西是有道理的——你不希望依赖于那个时间间隔的游戏代码做一些疯狂的事情,因为你传递给它零或一些非常大的值。

事实上,如果您的 timeSinceLastUpdate 变得过大(例如,因为您的用户暂停并恢复了游戏),将其规范化为理智的东西并不是一个坏主意。如果您有游戏实体(例如 GameplayKit 代理),其移动遵循某种 position += velocity * timeSinceLastUpdate 模型,您希望它们在您从暂停恢复时移动一帧的时间,不要用五分钟的暂停时间乘以速度然后跳到超空间。

如果您将之前的时间初始化为零、减去并归一化为您预期的帧间隔,您将使用相同的代码涵盖开始和未暂停的情况。

关于ios - 如何同时获取更新(currentTime :) function uses?(调用前),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com