【问题标题】:How to measure elapsed game time disregarding time the app is in the background?如何在不考虑应用程序在后台的时间的情况下测量经过的游戏时间?
【发布时间】:2016-09-08 08:42:30
【问题描述】:

我想衡量用户完成某项任务所需的时间,例如在游戏中。这很简单:获取开始和结束的NSDate,然后计算差值。

但是,我想忽略应用在后台花费的时间,例如来电时。我该怎么做? NSTimer (或多或少)是一个闹钟。我需要一个秒表。

我可以设置一个NSTimer,比如说每秒触发一次,然后计算秒数,然后在应用程序进入后台时使计时器无效,并在应用程序重新进入前台时重新激活它——但这似乎有点过头了。

有没有我忽略的简单方法?

【问题讨论】:

    标签: ios objective-c cocoa timing


    【解决方案1】:

    您有一个可以在任何 SpriteKit 游戏中运行的游戏循环。

    当游戏暂停时,游戏循环暂停。

    因此计算每个循环中经过的时间并添加到累积时间。

    【讨论】:

    • 我没有使用精灵套件。 “游戏”仅根据用户输入进行。有一个“游戏正在运行”状态,但除了普通的 Cocoa 事件循环之外没有游戏循环。
    • @JoeVölker 在这种情况下,您可以响应应用程序确实移动到后台通知。不要将游戏视为单个事件,而是将游戏视为一系列 1 个或多个事件,这些事件由诸如暂停游戏移至后台等事件分隔开......然后测量每个事件的时间并将它们加在一起。
    猜你喜欢
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多