using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class scene1 : MonoBehaviour
{
public Transform cube;
public int Run_num;
// Start is called before the first frame update
void Start()
{
print("游戏物体初始化运行一次");
}
// Update is called once per frame
void Update()
{
Debug.Log("每一帧都会运行这个方法");
//Debug.Log(Time.deltaTime);
//(修改不方便,Update不符合常理)cube.Translate(Vector3.forward/50f);//forward每次向前移动一米,因为Update方法是每秒运行50帧,所以要forward/50f才能做到每次向前移动1米
//1.deltaTime方法(【一般用来控制角色、动画的运动】)
cube.Translate(Vector3.forward * Time.deltaTime * 3);//永远1s运行3米,
//Time.timeScale = 3f;//1s运行9米,对所有deltaTime的进行加速
Time.timeScale = 0;//可以用来暂停动画
//2.realtimeSinceStartup方法(表示自游戏开始后的总时间,即使暂停也会不断的增加。【一般用作性能测试】)
//加法
float time1 = Time.realtimeSinceStartup;
for (var i = 0; i < Run_num; i++) {
Move1();
}
float time2 = Time.realtimeSinceStartup;
Debug.Log(time2 - time1);
//乘法
float time3 = Time.realtimeSinceStartup;
for (var i = 0; i < Run_num; i++)
{
Move2();
}
float time4 = Time.realtimeSinceStartup;
Debug.Log(time4 - time3);
}
void Move1() {
int i = 3;
i += 9;
i += 9;
}
void Move2()
{
int i = 3;
i *= 9;
i *= 9;
}
private void LateUpdate()
{
Debug.Log("每一帧都会运行这个方法,晚于Update的运行顺序");
}
private void Awake()
{
Debug.Log("都是在游戏物体初始化运行一次,但是Awake的运行顺序高于Start的,并且只要脚本中存在Awake方法,则无论是否挂载了该脚本都会执行该方法");
}
private void Reset()
{
Debug.Log("游戏物体上按reset时触发");
}
//一、事件函数
//Reset() :被附加脚本时、在游戏物体的组件上按Reset时会触发该事件函数
//Start() :在游戏初始化时会执行一次
//Update() :每一帧都会运行这个方法
//LateUpdate() Update(): 晚于Update的运行顺序,但是FPS和Update是一样的
//Awake() Start() : 都是在游戏物体初始化运行一次,但是Awake的运行顺序高于Start的,并且只要脚本中存在Awake方法,则无论是否挂载了该脚本都会执行该方法
//OnEnable(): 当将物体的SetActive设置为true时就会自动调用调用该方法
//OnDestory(): 当关闭游戏则会调用该方法
//FixedUpdate(): 会在指定帧调用该方法多少次
//二、Time时间类函数:
//Time.time 表示从游戏开发到现在的时间,会随着游戏的暂停而停止计算。
//Time.timeSinceLevelLoad 表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。
//Time.deltaTime 表示从上一帧到当前帧时间,以秒为单位。【一般用来控制角色、动画的运动】
//Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。
//Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。
//Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。
//Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,回放等、非常有用。如果游戏中控制运动的都是使用了Time.deltatime的话,则可以通过设置Time.timeScale=0来暂停其运动等。
//Time.frameCount 总帧数
//Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加。【一般用作性能测试】
//Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。
//Time.unscaledDeltaTime 以秒计算,完成最后一帧的时间 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
//Time.unscaledTime 从游戏开始到现在所用的时间 不考虑timescale时候与time相同,若timescale被设置,则无效。
}