unity提供了許多系統事件呼叫函式,每個事件函式都有各自的呼叫時機,清楚這些函式的特點及作用,可以使我們在編寫unity指令碼時,做到心中有數,避免錯誤。
先來張unity官方文件裡給出的事件圖:
awake() : 指令碼例項在被載入的時候,就會立刻被執行。 遊戲開始之前,用來初始化變數和遊戲狀態。awake() 函式在指令碼生命週期內只會執行一次,並且在執行前,遊戲內所有的物件都會先被初始化包括指令碼,因此,在awake() 內可以放心的訪問其他的物件。各個指令碼的 awake() 函式的執行順序是隨機的,所以你應該在 awake() 中設定好指令碼間的引用,然後在 start() 函式中再使用它們。awake() 先於所有的 start() 函式呼叫,awake() 函式不能被用作協同函式。
start() : 在任何 update() 函式第一次被呼叫之前呼叫,前提是指令碼處於 enabled 狀態,而 awake() 則會忽視指令碼 enabled 狀態。 start() 函式在指令碼生命週期內也只會執行一次。
fixedupdate() : 以固定頻率呼叫的更新函式,預設每0.02s執行一次,可以在編輯器 edit->project setting->time 中的 time manger 面板中的 fixed timestep 選項用於設定 fixed update 更新頻率。通常 fixedupdate() 比 update() 呼叫更頻繁。對剛體的處理都要放在 fixedupdate() 中, 一些連續的物理狀態的更新一般也都放在這裡面。 ontrigger*** 和 oncollision*** 這些物理系統的函式和 fixedupdate() 的呼叫頻率一致。
update() : update用於正常的更新,即用於幀更新後同步場景狀態。此方法每幀呼叫一次。update() 的執行頻率不確定,因為與實時幀率有關。
lateupdate() : 用於延遲更新,此方法在 update() 之後執行,每一幀呼叫一次。
ondestroy() : 在當前指令碼銷毀時呼叫。若在指令碼中分配了記憶體,可以在ondestroy() 中進行釋放。
Unity指令碼 事件指令碼執行順序 生命週期
下圖總結了unity在指令碼的生存期內如何排序和重複事件功能。當整個場景執行時或物體被例項化時呼叫,用於初始化資料,不能用來執行協同程式 awake onenable start,都是遊戲開始執行前就呼叫的方法 當物件變為可用時或啟用狀態被呼叫 僅呼叫一次 每幀呼叫多次,每秒呼叫固定次數,預設60幀...
HTML學習 樣式 指令碼 事件
1.樣式 新增方式 外部檔案 內部新增 內聯方式 還可以用來描述html文件的多項資訊,例如文件的作者,開發工具等等。3.關於對指令碼的支援 可以新增 標籤。標籤用於定義假如指令碼沒有執行時的替代文字。4.事件 僅在 body 和 frameset 元素中有效。屬性值 描述onload 指令碼當文件...
js基本事件
js基本事件 屬性 當以下情況發生時,出現此事件 ff n ie onabort 影象載入被中斷13 4onblur 元素失去焦點12 3onchange 使用者改變域的內容12 3onclick 滑鼠點選某個物件12 3ondblclick 滑鼠雙擊某個物件14 4onerror 當載入文件或影象...