我希望創建一個將在GameObject
在Hierarchy
選擇工作上下文菜單項。只有在選擇GameObject
是Prefab
時,此操作纔可用。我正在統一5.3.2
代碼:
文件MenuItems.cs位於資產\編輯
using UnityEditor;
using UnityEngine;
public static class MenuItems
{
[MenuItem("GameObject/Action on prefab", false, 14)]
private static void MenuActionPrefab()
{
}
[MenuItem("GameObject/Action on prefab", true, 14)]
private static bool ValidateMenuActionPrefab()
{
var isPrefab = PrefabUtility.GetPrefabParent(Selection.activeGameObject) != null;
return isPrefab;
}
}
問題:
問題是菜單項是可見的(並且可以被點擊),無論是否選擇GameObject
是Prefab
或不是。我在調試器中測試了代碼,從ValidateMenuActionPrefab()
返回的值是OK(true
,當我在Prefab上運行它時,false
在非預製gameobject上)。
我已經閱讀過Unity 5在驗證方法方面存在問題,但UNITY EDITOR EXTENSIONS – MENU ITEMS關於在Assets
中驗證的示例工作完全正常。
問:
因此,如果這是一個妥善的解決辦法?還是有另一種方法來實現相同的目標?
附加信息:
我曾嘗試使用運行這些方法的簡單方法:
[MenuItem("GameObject/Action on prefab")]
和
[MenuItem("GameObject/Action on prefab", true)]
但在這種情況下,在上下文菜單中沒有Action on prefab
。當我嘗試不設置優先級索引時,這個項目也不可見。
編輯:
行爲應該是呈三角Select Prefab
項目(截圖上可見)。當對象沒有連接到預製場時,應該是灰色且不可點擊的。當對象是預製場時是黑色的並且可以被點擊。
還沒有,但正如我所說的,代碼'isPrefab = PrefabUtility.GetPrefabParent(Selection.activeGameObject)! = null;'返回適當的值。問題是在'編輯器'字段中'預製件上的動作'在'預製件'和'非預製件'對象上也是可見的。 –
所以在你的編輯器中,當你選擇非預製對象這個領域是灰色的,不能點擊? –
是的,我附上了幾張照片 –