有时候某些功能的执行需要某些前置条件,例如:当对选中的游戏物体,资源执行某个操作,前提条件就是必须得有选中的物体,否则不执行操作,对于我们的菜单按钮来说,前置条件不满足的情况下,我们希望它显示为不可用状态:如下:
实现这个功能其实很简单,要达到这样的需求,必须得有两个菜单功能执行方法,并且它们的菜单路径要一样( [MenuItem(menuRootName + disableAndEnable)]),其中一个返回bool值,它返回的值作为菜单功能是否可用,返回false时代表不可用,并且他的MenuItem的最后一个参数为true。
//根据当前有没有选中物体来判断可否用快捷键
[MenuItem(menuRootName+ disableAndEnable, true)]
static bool SelectEnableDisable()
{
GameObject[] go = Selection.gameObjects as GameObject[];
if (go == null || go.Length == 0)
return false;
return true;
}
[MenuItem(menuRootName + disableAndEnable)]
static void SeletEnable()
{
bool enable = false;
GameObject[] gos = Selection.gameObjects as GameObject[];
foreach (GameObject go in gos)
{
enable = !go.activeInHierarchy;
go.SetActive(enable);
}
}