脚本生命周期
脚本代码使用技巧
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
///
/// </summary>
public class LifeCycle : MonoBehaviour
{
public int a = 100;
//序列化字段 作用:在编辑器中显示私有变量
[SerializeField]
private int b;
//作用:在编译器中隐藏字段
[HideInInspector]
public int c;
//设置数据范围
[Range(0,100)]
public int d;
public LifeCycle()
{
//Debug.Log("Hello");
}
//初始阶段
//执行时机:创建游戏对象--》立即执行(早于Start)
//作用:初始化
private void Awake()
{
//Debug.Log("Awake--" + Time.time);
}
//执行时机:创建游戏对象--》脚本启用--》才执行
//作用:初始化
private void Start()
{
//Debug.Log("Start--" + Time.time);
}
//物理阶段
//执行时机:每隔固定时间(默认0.02s)执行一次。(时间可以修改)
//适用性:适合对物体做物理操作(移动、旋转.......),不会受到渲染影响
private void FixedUpdate()
{//渲染时间不固定(每帧渲染量不同、机器性能不同)
//Debug.Log("FixedUpdate--" + Time.time);
}
//执行时机:渲染帧执行,执行间隔不固定
//适用性:处理游戏逻辑
private void Update()
{
//渲染时间不固定(每帧渲染量不同、机器性能不同)
//Debug.Log("Update--" + Time.time);
}
private void OnMouseDown()
{
Debug.Log("click!!!");
}
}
初始阶段
·Awake唤醒:
当物体载入时立即调用1次;常用于在游戏开始前进行初始化,可以判断当满足某种条件执行此脚本 this.enable=true。
·OnEnable 当可用:
每当脚本对象启用时调用。
·Start开始:
物体载入且脚本对象启用时被调用1次。常用于数据或游戏逻辑初始化,执行时机晚于Awake。
物理阶段
·FixedUpdate 固定更新:
脚本启用后,固定时间被调用,适用于对游戏对象做物理操作,例如移动等。
设置更新频率:“Edit”–>“Project Setting”–>
“Time”–>"Fixed Timestep"值,默认为0.02s.
·OnCollisionXXX碰撞:
当满足碰撞条件时调用。
·OnTriggerXXX触发:
当满足触发条件时调用。
游戏逻辑
·Update更新:
脚本启用后,每次渲染场景时调用,频率与设备性能及渲染量有关。
·LateUpdate 延迟更新
在Update函数被调用后执行,适用于跟随逻辑。
输入事件
·OnMouseEnter鼠标移入:
鼠标移入到当前Collider时调用。
·OnMouseOver鼠标经过:
鼠标经过当前 Collider 时调用。
·OnMouseExit 鼠标离开:
鼠标离开当前Collider时调用。
·OnMouseDown 鼠标按下:
鼠标按下当前Collider时调用。
·OnMouseUp鼠标抬起:
鼠标在当前Collider 上抬起时调用。
场景渲染
·OnBecameVisible 当可见:
当Mesh Renderer 在任何相机上可见时调用。
·OnBecamelnvisible当不可见:
当Mesh Renderer 在任何相机上都不可见时调用。
结束阶段
·OnDisable当不可用:
对象变为不可用或附属游戏对象非激活状态时此函数被调用。
·Onpestroy当销毁:
当脚本销毁或附属的游戏对象被销毁时被调用。
·OnApplicationQuit 当程序结束:
应用程序退出时被调用。