[MenuItem("Tool/Selector", true)]
static bool MenuEnable()
{
Debug.Log(Selection.activeGameObject.name);
return Selection.activeGameObject.name == "Canvas";
}
關于上述事件的觸發時間,很是疑惑,看log的話,是在選單關閉的時候輸出的。但是看實際效果的話,點開選單下拉框的時候,也是回應過的。
我這邊的測驗場景及結果是:場景內有Canvas及其他物件,當我選中其他物件(物件名為"A")的時候,點開選單,發現Selector按鈕為不可用狀態,但是這個時候沒有上述log的顯示,此時我點擊其他選單,會有log ("A")的出現,所以我覺得事件的回應事件是在關閉選單的時候觸發。但是詭異的是,在我選擇Canvas物件時打開選單,此時上述回傳true,Selector按鈕為可用狀態,這個時候點擊其他選單,selector按鈕所在選單關閉,出現了log("Canvas"),因為這時我選擇的物件依然是Canvas,所以可以理解為此時Selector按鈕依然是可用狀態。然后我又選擇了其他物件,再次打開選單,發現Selector按鈕已經不可用,但是此程序沒有任何log 的輸出,然而狀態改變了,是不是可以理解為回應事件在打開選單的時候觸發,但是又沒有log的輸出,所以很是困惑,實際表現與代碼log不匹配,希望了解的能告知一二。
uj5u.com熱心網友回復:
MenuItem(string itemName, bool isValidateFunction, int priority)itemName:選單名稱路徑
isValidateFunction:不寫為false,true則點擊選單前就會呼叫
priority:選單項顯示排序
uj5u.com熱心網友回復:
MenuItem(string itemName, bool isValidateFunction, int priority)
itemName:選單名稱路徑
isValidateFunction:不寫為false,true則點擊選單前就會呼叫 ,如果此函式回傳false,則選單項將被禁用。
priority:選單項顯示排序
uj5u.com熱心網友回復:
但是看log不是這樣的,選單點開顯示之前是沒有觸發事件的,關閉的時候才有事件觸發
uj5u.com熱心網友回復:
這種問題官網都寫的很清楚,還是不對就是bug等修復https://docs.unity3d.com/2018.4/Documentation/ScriptReference/MenuItem.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/7963.html
標籤:Unity3D
