数学工具类
1.Mathf.Abs(int num):返回绝对值
2.Mathf.Max (int a,int b):返回更大的值 //没有数量限制
3.Mathf.Min(int a,int b):返回最小的值 //没有数量限制
4.Mathf. Round (2.5f);返回四舍五入后得到值
5.Mathf.Ceil(2.5f);返回向上取整的值
6.Mathf.Floor (2.5f);返回向下取整的值
7.Random.Range(0 ,5):返回随机值
(1)如果是int重载:返回0-4的随机值,包含0、不包含5
(2)如果是float重载:返回0-5的随机值,包含0并且包含5
时间工具类
只读
1.Time.time: 表示从游戏运行到现在的时间,会随着游戏的暂停而停止计算
2.Time.deltaTime: 表示从上一帧到当前帧的时间,以秒为单位:
实际用途:
每个人的设备都是不同的,有的设备是30帧,有的设备是120帧,那如果用之前这个方法实现物体的运动,则要这么写:
transform.Translate( new Vector3(0 , 0.1f , 0) ); //每帧上升0.1米(以帧计算)
//那这样 一秒钟30帧的设备只上升了3米,而也是一秒的120设备却上升了12米,相差了9米,是不是很不公平?
我是用了120次计算的,所以我的画面会更流畅,你移动的一米,你只花了30次或者60次,那当然你会更卡,但这里大家想一下,如果我一针花的时间超过了一秒,比如说两秒,那我真的结果是,这一行代码直接往前跑,往上跑两米,那其实也是也是公平的,对吧,因为有有可能偶尔游戏突然就卡死了但是我计算出来我上一帧的时间,到这一帧既然用了三秒钟,那我直接向前飞三米,游戏还是平衡的,因为我就是要这样的位移嘛 ,对吧,只是画面体验不好了
//每秒上升1米:
transform.Translate( new Vector(0 , 0.1f ,0 ) * 1 * Time.deltaTime);
/// 方向 * 速度 * 一帧花费的时间
3.Time.realtimeSinceStartup: 表示自游戏开启后的总时间,即使暂停也会增加,也就是现实的时间/
读写
4.Time.timeScale: 时间缩放,默认值为1,若设置 <1 ,表示时间减慢;若设置 >1 则表示时间加快 ;若设置 0 则意味着游戏暂停。