由于开发需要,做了个右键扩展,但是发现多选的话会多次触发
代码:
[MenuItem("GameObject/输出名字", false, 1)]
public static void LogName()
{
foreach (var gameObject in Selection.gameObjects)
{
Debug.Log(gameObject.name);
}
}
对Hierarchy面板的单个物体 右键=>输出名字 输出该物体名字
选中物体:
对Hierarchy面板的多个物体 顶部菜单栏=>GameObjcet=>输出名字,逐个输出这些物体的名字
顶部菜单执行结果:
对Hierarchy面板的多个物体 右键=>输出名字 多次(多少个物体就多少次)逐个输出该物体名字
右键菜单执行结果:
unity版本:2020.3
想要右键执行也实现在菜单栏 执行的效果
这个好像是没办法避免的,unity就是这么做的,你这样写的话用菜单栏获取就可以了,因为你在hierarchy多选物体时右键是会触发多次的,如果真的想在hierarchy右键多选只输出一次的话,目前我能想到的有个思路:
1.设置一个状态标识符去标识只执行一次,但是你下次想继续获取的话,只能重置这个状态。(有点麻烦不建议)
我想了一下你这个需求是个矛盾点,好像没法解决:要扩展鼠标右键就要在GameObject目录下,但是在GameObject的选中逻辑里面就是选中了多少GameObject就执行多少次。
emm,,还以为是我有什么理解错误的地方。。
看来要记录执行物体然后再进行比对来避免同一批物体多次执行了。
总之谢谢答者。