更新與遊戲狀態
Awake:
這個函式是最先被呼叫的, 而且只會被呼叫一次. 但若物件一開始載入時未被啟用 (inactive), Awake 便不會被呼叫, 直到該物件啟用 (active) 才被呼叫. Awake被呼叫代表 Script 已經被加載好了, 通常用於初始化變數和遊戲狀態.
OnEnable:
只有當物件是啟用 (active), Script 被激活 (active) 時才會呼叫. 代表著MonoBehaviour 已經實體化並附加至物件上, 正要運行. 因此, 如果物件或 Script被開開關關多次, OnEnable 也會被呼叫很多次.
Start:
當 Script 要運行首幀的邏輯/渲染之前會呼叫. 與 Awake 相似都只會被呼叫一次, 但差別是 Awake 只要物件被啟用 (active) , 而 Start 必須滿足物件 active 與 Script active, 其實也就是 OnEnable 之後.
更新 (FixedUpdate, Update, LateUpdate)
lifecycle 中有幾個事件函式能追蹤遊戲邏輯、玩家操作、動畫…等. 開發上, 很常見到在 Update 函式執行大多數的遊戲邏輯.
Update:
每幀畫面更新時都會被呼叫. 受到當前繪製畫面的影響, 繪製的時間不固定, 所以更新一次所需的時間也不盡相同.
FixedUpdate:
與 Update 的區別是, FixedUpdate 固定時間會被呼叫. 若幀頻 (每秒更新畫面的次數) 高的話, 固定時間內 Update 次數可能比 FixedUpdate 次數多; 反之, 幀頻低的情況, FixedUpdate 次數會多於 Update 次數. FixedUpdate 不被幀畫面更新的時間影響, 相較於 Update, 更適合用於處理物理計算的邏輯.
每幀畫面更新時, 在 Update 之後被呼叫, 屬於遊戲邏輯完成計算後的處理函式. 常見用法就是第三人稱跟隨相機, 在確保角色已經移動/旋轉計算完畢後, 調整相機的位置與方向.
留言
張貼留言