今天來介紹Unity裡常用的一些固定功能函數,包括Awake,Start,FixedUpdate,Update,LateUpdate,OnGUI,Reset,OnDisable跟OnDestroy
以上都是Unity很常用到的函數,但大家都知道這些函數分別代表什麼功能嗎?那如果同時執行這些函數時,他們彼此間的先後順序又是為何呢?
首先介紹函數的功能 :
void Awake(){}
初始化遊戲物件,在腳本整個生命周期中被使用一次,是腳本最先使用到的函数。無論腳本是否開啟,都將執行,除非GameObject沒有被開啟。
void OnEnable(){}
void Start(){}
初始化遊戲物件,在腳本整個生命周期中被使用一次,在Update之前被使用。
void FixedUpdate(){}
固定禎數更新,常用於處理更新 Rigidbody 的狀態。
void Update(){}
每一禎更新。
void LateUpdate(){}
在所有 Update 更新完之後更新,常用在跟随相機位置、角度等。
void OnGUI(){}
在渲染和處理GUI事件時使用。
void Reset(){}
在用戶點擊Reset按鈕或者首次添加該组件時被使用。此函數只在編輯模式下被使用。Reset最常用於在檢視面板中給予一個默認值。
void OnDisable(){}
當物體被銷毀時 OnDisable將被使用,並且可用於清理程式碼。腳本被卸載時,OnDisable將被使用,OnEnable在腳本被載入後使用。
void OnDestroy(){}
當MonoBehaviour將被銷毀時,這個函數被使用。OnDestroy只會在預先已經被開啟的遊戲物件上被使用。
接下來我們還看看他們彼此間的先後順序 :
先打出以下程式碼 :
using UnityEngine;
using System.Collections;
public class TestFunction : MonoBehaviour {
void Awake()
{
print("Awake");
}
void OnEnable()
{
print("OnEnable");
}
void Start()
{
print("Start");
}
void FixedUpdate()
{
print("FixedUpdate");
}
void Update()
{
print("Update");
}
void LateUpdate()
{
Debug.Log("LateUpdate");
}
void OnGUI()
{
print("OnGUI");
}
void Reset()
{
print("OnReset");
}
void OnDisable()
{
print("OnDisable");
}
void OnDestroy()
{
print("OnDestroy");
}
}
接著執行即可看到結果