
游戏的设计
|
19
讨论
注意,每帧耗时会“随时变化”。每帧耗时主要用于实时跟踪每帧刷新时所耗费的
时间
,
在游戏中,这意味着从这一帧到下一帧所耗费的时间。因为游戏内容总是根
据帧来进行改变,两帧之间的时间值就变得很重要了。
此外,帧与帧之间的每帧耗时并不是一成不变的。按理来说,如果游戏刷新率为每
秒
60
帧,则游戏的每帧耗时应该是一个常量:
16
毫秒(即
1
÷
60 = 0.0166
);但
实际上根本不是这么回事,每帧耗时会根据每一帧在刷新时需要处理事情的多少而
定。也就是说,每帧耗时总是在一个小范围内变动,因此当我们想让状态的改变与
屏幕显示一致时,计算每一帧的每帧耗时就变得很有必要。
有时候引擎会直接给出每帧耗时,例如
CADisplayLink
的
duration
属性(详见本
章
1.8
节)。
有些引擎只提供当前时间,你可以根据它计算出每帧耗时。例如,
SKScene
类会在
update
方法中传递一个
currentTime
参数(详见第
7
章
7.15
节)。
还有的时候(例如,在你自己的主循环中),你两种值都无法获得。在这种情况下,
你必须自己获取当前时间:
let currentTime = Date.timeIntervalSinceReferenceDate as Double
1.6
进入和退出游戏
问题
有时候需要知道用户何时离开游戏,这样我们可以让游戏暂时停止。当用户回到游
戏时,我们也要及时知道。
解决方案
要想在用户进入、退出游戏时得到通知,我们需要向
NSNotificationCenter
(通知
中心)进行注册。我们需要接收以下类型的通知: ...