任务:
我想创建一个上下文菜单项,该项可以在GameObject
中选择的Hierarchy
上运行。仅当选定GameObject
为Prefab
时,此操作才可用。我正在开发 Unity 5.3.2
代码:
文件MenuItems.cs位于 Assets \ Editor
中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()
返回的值是正常的(true
当我在Prefab上运行时,false
在非预制游戏对象上)。
我读过Unity 5验证方法有问题,但Assets
中有关[MenuItem("GameObject/Action on prefab")]
验证的示例完全正常。
问题:
那么,如果这是一个合适的解决方案?还是有另一种方法可以实现同样的目标吗?
其他信息:
我尝试使用以下方法简单地运行这些方法:
[MenuItem("GameObject/Action on prefab", true)]
和
Action on prefab
但在这种情况下,上下文菜单中没有Select Prefab
。当我尝试不设置优先级索引时,此项目也不可见。
修改
行为应与<script src="https://maps.googleapis.com/maps/api/js" type="text/javascript"></script>
项相似(在屏幕截图中可见)。当对象未连接到预制字段时,应该是灰色且不可点击的。当对象是预制字段时,它是黑色的,可以单击。