如何在不考虑应用程序在后台的时间的情况下测量经过的游戏时间?
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 应用程序进行后台处理