【Unity3d】脚本的生命周期及其相关函数
生活随笔
收集整理的這篇文章主要介紹了
【Unity3d】脚本的生命周期及其相关函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
腳本的生命周期
生命周期的理解
腳本的生命周期從加載到運行結束,通過Awake、OnEnable、Start、FixedUpdata、LateUpdate、OnDisable、OnDestroy、Updata函數來對腳本的運行狀態進行操作。
代碼驗證
新建腳本和場景,在腳本中加入生命周期相關的函數。
將腳本綁定到任意的GameObject上,然后運行。
LifeScripts
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 驗證腳本文件生命周期涉及的方法 /// 在腳本文件中添加常用的方法,以便于清晰的觀察這些腳本方法的執行流程 /// 通過觀察結果,總結腳本中關于生命周期方法的執行過程及其功能 /// </summary> public class LifeScript1 : MonoBehaviour {/// <summary>/// Awake()函數/// 整個生命周期中最先調用的方法/// 在腳本被加載時被調用/// </summary>private void Awake(){Debug.Log("Awake()");}/// <summary>/// OnEnable/// 當前對象(或腳本)處于可激活狀態時,調用該方法/// </summary>private void OnEnable(){Debug.Log("OnEnable()");}// Start is called before the first frame update/// <summary>/// Start()/// 用于完成初始化工作(變量賦初值、查找指定游戲對象等)/// </summary>void Start(){Debug.Log("Start()");}/// <summary>/// FixedUpdata()/// </summary>private void FixedUpdate(){Debug.Log("FixedUpdate");}private void LateUpdate(){Debug.Log("LateUpdata()");}/// <summary>/// OnDisable():/// 在銷毀前調用/// </summary>private void OnDisable(){Debug.Log("OnDisable()");}private void OnDestroy(){Debug.Log("OnDestroy()");}// Update is called once per framevoid Update(){Debug.Log("Updata()");} }執行結果
1.點擊運行后,Console輸出結果如下,可以看到Awake() OnEnable() Start()函數只執行了一次,而Updata() FixedUpdata() LataUpdata()函數一直在執行。
2.在Inspecter視窗中取消腳本前的對勾選框,即將腳本改為未啟用狀態:
結果如下,執行了OnDisable()函數。
再次點擊選框,激活腳本:
結果如下,執行OnEnable()函數,腳本被啟用,Updata()函數繼續執行。
結束項目運行,先后執行了OnDisable()和OnDestroy()函數。
總結
| Awake() | 整個生命周期中,只被調用一次;腳本被加載時自動調用 |
| OnEnable() | 初始化時被調用一次;之后當對象(腳本文件)被啟用時調用;配合OnDiasable()使用 |
| Start() | 整個生命周期中,只被調用一次;用于初始化,為變量賦初值 |
| FixedUpdata() | 以幀為單位刷新,以固定的時間間隔刷新;主要完成與物理相關的更新操作 |
| Updata() | 每一幀時間間隔不固定,與機器性能和加載規模有關;主要完成數據更新、邏輯處理操作 |
| LataUpdata() | 一幀結束,新的一幀之前執行 |
| OnDisable() | 對象(腳本文件)切換為不可用狀態時調用;一般與OnEnable()配合使用 |
| Destroy() | 整個生命周期中,只被調用一次;當對象(腳本文件)被銷毀時,一般先執行OnDisable() 方法 |
注釋1:對象(腳本文件):腳本只有綁定到對象上才會被執行
總結
以上是生活随笔為你收集整理的【Unity3d】脚本的生命周期及其相关函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(1876)vue之电商管理系统
- 下一篇: 前端学习(1670):前端系列实战课程之