iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

深入淺出做中學Unity(重新挑戰)系列 第 17

Unity - 固定功能函數

  • 分享至 

  • xImage
  •  

今天來介紹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");
    }  
}

接著執行即可看到結果
https://ithelp.ithome.com.tw/upload/images/20200930/2013005522BcaAWzuo.png


上一篇
Unity - 光照貼圖
下一篇
Unity - 匯入檔案
系列文
深入淺出做中學Unity(重新挑戰)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言