ios – 如何获得更新(currentTime :)函数使用的相同时间? (在被召唤之前)

ios – 如何获得更新(currentTime :)函数使用的相同时间? (在被召唤之前),第1张

概述问题:SKScene中的update(currentTime :)函数使用currentTime参数在每个帧中调用.我想知道如何从相同的源更新(currentTime :)使用而不使用更新功能.我只发现CFAbsoluteTimeGetCurrent()不同. 原因:要计算timeSinceLastUpdate,您需要一个名为timeOfLastUpdate的实例变量.要实现timeOfLastU 问题:SKScene中的update(currentTime :)函数使用currentTime参数在每个帧中调用.我想知道如何从相同的源更新(currentTime :)使用而不使用更新功能.我只发现CFabsoluteTimeGetCurrent()不同.

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

解决方法 第一次,因为UpLastUpdate将始终与其他人不同.通常,一个存储来自先前更新调用的绝对时间,并从当前调用的时间中减去它以获得timeSinceLastUpdate.如果之前的时间不存在,因为你是第一次通过渲染循环 – 它被设置为零或无穷大或负值或者你初始化它的任何标记值,只需将你的timeSinceLastUpdate设置为一些标称值即可开始.像你的帧间隔(16.67毫秒,如果你要60 fps)这样的东西是有道理的 – 你不希望游戏代码依赖于那个时间间隔做一些疯狂的事情,因为你传递零或一些巨大的价值.

事实上,如果你的用户暂停并恢复游戏,那么将你的timeSinceLastUpdate标准化为理智的东西并不是一个坏主意.如果您有游戏实体(例如GameplayKit代理),其移动遵循某种位置= veLocity * timeSinceLastUpdate模型,您希望它们在您从暂停中恢复时移动一帧的时间,而不是花费五分钟的暂停时间速度和跳跃到超空间.

如果将之前的时间初始化为零,减去并标准化为预期的帧间隔,则将使用相同的代码覆盖起始和未暂停的情况.

总结

以上是内存溢出为你收集整理的ios – 如何获得更新(currentTime :)函数使用的相同时间? (在被召唤之前)全部内容,希望文章能够帮你解决ios – 如何获得更新(currentTime :)函数使用的相同时间? (在被召唤之前)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1115080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存