Unity 之 ExecuteAlways正在取代ExecuteInEditMode
@[TOC](Unity 基礎 之 ExecuteAlways介紹)
在Unity的編輯器中分為三種模式:
編輯器模式:打開任意工程,不做任何操作Unity就處于一個可編輯的狀態,這就是編輯器模式;
運行模式:當我們點擊Play(?)運行一個場景時,這時Unity就處于運行模式;
預制體模式:當Unity進入Prefab時對應的編輯狀態叫預制體模式;
ExecuteInEditMode
描述:使腳本的所有實例都在編輯模式下執行。
默認情況下,只在編輯器運行模式下執行 MonoBehaviours。通過添加此屬性,MonoBehaviour 的任何實例都將在編輯器處于編輯模式時執行其回調函數。
此屬性正在逐步被淘汰,因為它不考慮預制體模式。
如果在預制件模式下編輯一個帶有 MonoBehaviour 并啟用了此屬性的預制件,然后進入播放模式,則編輯器將退出預制件模式,以防止由僅用于播放模式的邏輯引起的預制件意外修改。
要指示 MonoBehaviour 正確考慮了預制件模式并且在播放模式期間以預制件模式打開是安全的,可以使用屬性 ExecuteAlways 取代此屬性。
下面幾個函數和運行模式下調用情況不同:
Update:只有當場景發生變化時才會調用。
OnGUI:在“游戲視圖”接收到非編輯器時調用。事件它不使用(例如,EventType.ScrollWheel)并且不轉發到編輯器的鍵盤快捷方式系統(例如,EventType.KeyDown, EventType.KeyUp)。轉發到游戲視圖的事件將排隊,不能保證立即處理。
OnRenderObject:在場景視圖或游戲視圖的每一次重繪上都調用其他呈現回調函數。
ExecuteAlways
使腳本的實例始終執行,作為Play Mode的一部分和Editing。
默認情況下,MonoBehaviours僅在Play Mode下執行。
當希望腳本作為編輯器工作的一部分執行某些操作時,可以使用[ExecuteAlways]屬性,該工具不一定與構建
僅在Scene發生改變是調用Update
當Game 試圖接收到它不使用的非編輯器事件(例如,EventType.ScrollWheel)會調用OnGUI
在場景試圖或者Game試圖的每次重繪都會調用OnRenderObject和其他渲染回調函數
5G游戲 unity
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。