FPS游戏框架漫谈第十二天

当我们在开发一款游戏的时候,时间在流逝,那么我们游戏内的其实也会流逝,但是就真实世界而言,时间是不会静止的。
但是我们的游戏内对时间就暂停,如果说时间暂停是不是意味着我们游戏内所有的行为都要暂停呢?????
实际情况并非如此,具体就看策划的要求了, 比如有这么个场景 我们在玩PVE打怪, 那么怪是配置多少秒刷一波,如果我们把时间暂停了,那么这个刷怪时间流逝是不是也要暂停,不然就不公平,我们玩家暂停了,怪物还能提前刷怪,甚至已经刷了n波 怪。
上述问题是非常不合理的。
那么??????????什么情况下我们是不需要暂时时间的,比如网络相关,这个是需要真实时间,也就是你过了多少时间就是过了多少时间,比如心跳包的检测,不能因为你客户端其他功能需要把时间暂停了,那么我心跳包就停止检测,你客户端断开连接多久和时间暂停是没有关联的。
那么我们是如何拿到真实时间和暂停之后的时间流逝量的呢
非真实时间:Time.time 这个时间是引擎去统计的,你游戏一运行就开始计算了,同时会受时间缩放因子Time.timeScale的影响,对于暂停而已就是Time.timeScale = 0了。
真实时间:他的获取是Time.realTimeSinceStartup 这个时间的计算是不会把Time.timeScale放入公式当中,即可以看成Time.timeScale = 1
还有一个案例 我们做系统的同学,遇到动画,使用的是NGU中的Tween动画的时候,如果我们时间暂停了,策划要求这个动画也要暂停,但是如果你一个不注意勾选了Ignore TimeScale,很明显就是动画的播放不再受时间缩放因子的影响了,那么动画就无法暂停了。

你可能感兴趣的:(unity,FPS,游戏)