最近在复习Unity 3D的基础知识,虽然简单,但对于有些不常用的还是容易忽略和犯错,因此还是觉得总结一下比较好。
本文主要以官方的API为主,Unity 版本为5.6.参考链接为:事件函数 如果有不当之处,欢迎指出。
代码示例如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EventFunction : MonoBehaviour {
/// <summary>
/// Editor(脚本编辑时操作)
/// </summary>
//该脚本组件被挂载和重置时被执行
private void Reset()
{
Debug.Log("Reset被执行!");
}
/// <summary>
/// Initialization(初始化操作)
/// </summary>
private void Awake()
{
Debug.Log("Awake被执行!");
}
private void OnEnable()
{
Debug.Log("OnEnable被执行!");
}
// Use this for initialization
void Start () {
Debug.Log("Start被执行!");
}
/// <summary>
/// Physics 物理性质操作
/// </summary>
//执行时间固定
private void FixedUpdate()
{
Debug.Log("FixedUpdate被执行!");
}
//OnTriggerXXX
//OnCollisionXXX
//yield WaitForFixedUpdate
/// <summary>
/// Input
/// </summary>
//OnMouseXXX
/// <summary>
/// Game logic 游戏逻辑
/// </summary>
// Update is called once per frame
执行时间不固定,由函数内部决定
void Update () {
Debug.Log("Update被执行!");
}
//yield null
//yield WaitForSeconds
//yield WWW
//yield StartCoroutine
//执行时间不固定,由函数内部决定
private void LateUpdate()
{
Debug.Log("LateUpdate被执行!");
}
/// <summary>
/// Gizmo rendering
/// </summary>
///
//在编辑器模式下被执行
private void OnDrawGizmos()
{
Debug.Log("OnDrawGizmos被执行!");
}
/// <summary>
/// GUI rendering
/// </summary>
//每帧被多次执行
private void OnGUI()
{
Debug.Log("OnGUI被执行!");
}
/// <summary>
/// End of frame
/// </summary>
//yield WaitForEndOfFrame
/// <summary>
/// Pausing
/// </summary>
//OnApplicationPause is called after the frame where the pause occurs but issues another frame before actually pausing.
//OnApplicationPause在出现暂停帧之后被调用,但在实际暂停之前发出另一帧
private void OnApplicationPause(bool pause)
{
Debug.Log("OnApplicationPause被执行!");
}
//项目退出时被执行
private void OnApplicationQuit()
{
Debug.Log("OnApplicationQuit被执行!");
}
//在脚本该帧时被禁用时执行,如果它是启用,则OnEnable会再次被执行
private void OnDisable()
{
Debug.Log("OnDisable被执行!");
}
//脚本销毁时被执行
private void OnDestroy()
{
Debug.Log("OnDestroy被执行!");
}
}
执行结果如下:
此处需要注意下,OnDrawGizmos与OnApplicationPause的执行,OnDrawGizmos函数,仅在编辑器模式下执行,而OnApplicationPause函数,我个人理解是,在遇到暂停帧之后被调用,即应用程序失去了焦点与恢复焦点时被调用。但API里面指出,它在实际暂停前返回到start方法前调用。如果理解不对的地方还望指出!谢谢!