您的位置:首页 > 移动开发 > Unity3D

Unity3D事件函数执行顺序

2017-07-12 21:58 399 查看
最近在复习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被执行!");
}

//在脚本该帧时被禁用时执行,如果它是启用,则OnEnable会再次被执行
private void OnDisable()
{
Debug.Log("OnDisable被执行!");
}

//项目退出时被执行
private void OnApplicationQuit()
{
Debug.Log("OnApplicationQuit被执行!");
}

//脚本销毁时被执行
private void OnDestroy()
{
Debug.Log("OnDestroy被执行!");
}
}


执行结果如下:



此处需要注意下,OnDrawGizmos与OnApplicationPause的执行,OnDrawGizmos函数,仅在编辑器模式下执行,而OnApplicationPause函数,我个人理解是,在遇到暂停帧之后被调用,即应用程序失去了焦点与恢复焦点时被调用。但API里面指出,它在实际暂停前返回到start方法前调用。如果理解不对的地方还望指出!谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息