首页 > 代码库 > Time

Time

1、Time.time 时间 (只读) 单位:秒
从游戏开始到到现在所用的时间
如果在第一个level(场景)逗留了5秒,在第二个场景逗留了2秒,现在处于第三个场景,第三个场景到现在已经运行了3秒,那么
此时的 Time.time=5+2+3=10s


2、Time.timeSinceLevelLoad 从加载当前关卡到现在的时间 (只读) 单位:秒
加载本关卡开始到现在所用的时间。
如果在第一个level(场景)逗留了5秒,现在处于第二个场景,第二个场景到现在已经运行了3秒,
那么在第二个场景得到的timeSinceLevelLoad为: Time.timeSinceLevelLoad=3s


3、Time.deltaTime 增量时间 (只读) 单位:秒
使用这个函数使您的游戏帧率独立
放在Update()函数中的代码是以帧来执行的.如果我们需要物体的移动以秒来执行.我们需要将物体移动的值乘以Time.deltaTime
无论是从第一场景,还是第二场景,Time.deltaTime 差不多等于 0.01656....他的功能就是使对象与帧率无关,而是以秒来
进行它的操作,至于原因是什么,这篇文章里已有解释:http://www.cnblogs.com/MrZivChu/p/normalclass.html

void Update() {       float translation = Time.deltaTime * 10;       transform.Translate(0, 0, translation); //乘以 Time.deltaTime 表示此对象每秒移动10米,而不是每帧移动10米}

 

4、Time.fixedTime 固定时间 (只读) 单位:秒
这是以秒计自游戏开始的时间。
输出的时间和Time.time 差不多一样!
固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。


5、Time.fixedDeltaTime 固定增量时间 单位:秒
在物理和其他固定帧速率进行更新
和Time.deltaTime差不多,无论是从第一场景,还是第二场景,Time.fixedDeltaTime 都等于 0.02

其值可以在Edit -> Project Settings -> Time 下进行设置
受Time.timeScale 影响
这个可以用Time.deltaTime取代,因为如果你在FixedUpdate或者Update方法内部的话,他会自动返回正确的增量时间


6、Time.maximumDeltaTime 最大增量时间
一帧能获得的最大时间。物理和其他固定帧速率更新(像FixedUpdate)。
和Time.deltaTime差不多,无论是从第一场景,还是第二场景,Time.maximumDeltaTime 等于 0.333333

其值可以在Edit -> Project Settings -> Time 下进行设置
建议保持最长时间框架1/10th和1/3th秒之间 ( 0.1 ~ 0.3333333....)


7、Time.smoothDeltaTime 平滑增量时间 (只读)
一个平滑淡出Time.deltaTime
和Time.deltaTime差不多,无论是从第一场景,还是第二场景,Time.smoothDeltaTime 差不多等于 0.01656....


8、Time.timeScale 时间缩放
传递时间的缩放。这可以用于减慢运动效果。
当timeScale传递时间1.0时和实时时间一样快。当timeScale传递时间0.5时比实时时间慢一半。
当timeScale传递时间为0时游戏基本上暂停了,如果你的所有函数是和帧速率无关的。
除了realtimeSinceStartup,timeScale影响所有时间和增量时间基于Time类的变量。
如果降低timeScale,建议也降低Time.fixedDeltaTime同样的数值。
当timescale设置为0时,FixedUpdate函数将不会被调用。


9、Time.frameCount 帧数 (只读)
已经传递的帧的总数。
如果第一场景加载了32帧,此时处在第二场景,到现在第二场景已经加载了18帧
那么此时Time.frameCount = 32+18=50

10、Time.realtimeSinceStartup 自游戏开始实时时间 (只读) 单位:秒

自游戏开始的实时时间
在几乎所有情况下,你应该使用Time.time代替。
但是他不被Time.timeScale影响,即使被玩家暂停realtimeSinceStartup也将保持增加(在后台)。当你想通过设置
Time.timeScale为0暂停游戏时,使用realtimeSinceStartup是很有用的。

11、Time.captureFramerate 捕获帧速率
如果captureFramerate设置比0大的值,时间会在每帧 (1.0 / captureFramerate) 前进,不考虑真实时间。如果你想捕获一个
视频,你需要一个固定的帧速率,这个是很有用的。
你需要一个持续的帧率和帧之间留出足够的时间来保存屏幕图像。
捕捉帧率或者说限定帧率,电视帧率是30,电影是24每秒,为了某些原因比如模拟电影效果或者其他原因,用这个设定每秒钟的
帧速

public string folder = "ScreenshotFolder";public int frameRate = 25;void Start() {     Time.captureFramerate = frameRate;     System.IO.Directory.CreateDirectory(folder);}void Update() {     string name = String.Format("{0}/{1:D04} shot.png", folder, Time.frameCount);     Application.CaptureScreenshot(name);}

 

Time