這是我參與8月更文挑戰的第3天,活動詳情查看:8月更文挑戰markdown
運行狀態初始化:(也是執行順序)編輯器
編輯器狀態初始化:ide
實際應用:函數
private void Awake(){Instance = this;}
。Number
,而下次顯示時使用是又須要Number = 1
,此時就能夠寫private void Awake(){Number = 1;}
。private void Start(){child1 = transform.GetChild(0);}
運行狀態初始化示例: 搭建場景新建兩個UI -> Image,一個做爲背景,一個做爲彈窗。新建腳本並掛載到彈窗Image上。post
腳本內容以下:測試
using UnityEngine;
public class LifeCycleFunction : MonoBehaviour
{
#region Initialization 初始化
public int Number = 1;
private void Awake()
{
Debug.Log("Awake 初始化時調用,在Start函數以前調用,...");
}
private void OnEnable()
{
Debug.Log("OnEnable 每次對象啓用都會被調用...");
}
private void Reset()
{
Number = 0;
Debug.Log("Reset 編輯器模式下才可被調用...Number: " + Number);
}
private void Start()
{
Debug.Log("Start 僅當啓用腳本實例時,纔會在第一幀調用...");
}
#endregion
}
複製代碼
這次運行結果展現了Awake
,OnEnable
,Start
的執行順序,運行結果: ui
編輯器下的初始化: 1.腳本拖拽附加時自動執行this
2.點擊Reset調用: 能夠看到我手動Number設置爲2,Reset後被重置爲代碼中寫的0; spa
三個函數:3d
實際應用:
將以下腳本添加到上面新建的腳本中:(爲了方便查看,將上面初始化的函數先註釋掉)
#region 更新
// 固定時間調用,FixedUpdate一般比Update更頻繁地調用
private void FixedUpdate()
{
Debug.Log("FixedUpdate 固定時間調用...");
}
// 每幀調用一次
private void Update()
{
Debug.Log("Update 每幀調用一次...");
}
// 在Update後,每幀調用一次
private void LateUpdate()
{
Debug.Log("LateUpdate 在Update後,每幀調用一次...");
}
#endregion
複製代碼
運行後,能夠看到結果以下:
三個函數:
實際應用:
1.遊戲物體禁用觸發OnDisable
2.遊戲物體銷燬時觸發OnDisable
和OnDestroy
Unity 官方圖解: