如何在不考虑应用程序在后台的时间的情况下测量经过的游戏时间?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

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

以上是关于如何在不考虑应用程序在后台的时间的情况下测量经过的游戏时间?的主要内容,如果未能解决你的问题,请参考以下文章

Google Fit 应用程序如何在不耗尽电池电量的情况下一直测量步数?

在不运行应用程序的情况下注册后台任务

如何在不将应用程序放在前面的情况下从 BLE 设备控制 iOS 应用程序进行后台处理

如何在不影响 Node.JS 应用程序的情况下从后台异步发送大量电子邮件?

如何在不考虑时间的情况下按日期时间列分组

当应用程序处于状态后台或被杀死时,如何在不点击通知的情况下存储 iOS 远程通知?