Unity3d開發(十二)使用Menu.SetCheck更改選單勾選狀態
阿新 • • 發佈:2019-02-16
在編輯器中總有一些改變狀態量的需求,例如:是否輸出日誌。通常的做法是在程式碼中更改,不過這需要重新編譯,而且也對非程式人員不友好 。更靈活的做法是使用本地變數儲存,不過這寫起來比較麻煩。最近我發現Unity有個介面可以乾淨的解決這個問題,我使用的是Unity5.3版本。
需求 & 實現效果
策劃同學跑過來說:日誌輸出太多,有點卡,能關了麼 。所以我就給做了一個選單擴充套件,效果如下:
當勾選狀態時,輸出日誌;勾掉時,不輸出日誌。
程式碼實現
實現這個效果很簡單,不超過10行程式碼哦。
using UnityEngine; using System.Collections; using UnityEditor; public class LogSwitchEditor : MonoBehaviour { #region Public Attributes const string logOutPath = "Tools/輸出日誌"; #endregion [MenuItem(logOutPath)] public static void MenuLogOut() { bool flag = Menu.GetChecked(logOutPath); LogSwitch.CurrentLogSwitch = !flag; Menu.SetChecked(logOutPath, !flag); } [MenuItem(logOutPath,true)] public static bool MenuLogOutCheck() { Menu.SetChecked(logOutPath, LogSwitch.CurrentLogSwitch); return true; } }
簡單解釋下,logOutPath
是目錄路徑。MenuLogOutCheck
用來保證狀態資料與選單顯示一致。業務函式就一句設定switch真假,大家可以自己做相應的邏輯。
另外,由於MenuLogOutCheck
會先於點選執行,所以有這個函式就可以保證,先呼叫Menu.SetChecked
後呼叫Menu.GetChecked
。否則會報錯,這個問題查了我半天,大家小心
如果你覺得這篇文章對你有幫助,可以順手點個頂,不但不會喜當爹,還能讓更多人能看到它...