Unity3D事件函数执行顺序

来源:互联网 发布:疯狂的java讲义百度云 编辑:程序博客网 时间:2024/05/16 02:00

     最近在复习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方法前调用。如果理解不对的地方还望指出!谢谢!

原创粉丝点击