获取鼠标在Hierarchy和Project窗口选中的对象
遍历选中的对象
[MenuItem("Tools/selection")]
static void fun3(MenuCommand cmd)
{
//Debug.Log(Selection.activeGameObject.name);
foreach (Object obj in Selection.objects)
{
Debug.Log(obj.name);
}
}
注:获取Hierarchy和Project窗口选中的对象时,Hierarchy表示场景中的对象,Selection.activeGameObject有差异。
使用Selection.activeGameObject
- 能获取Hierarchy中的所有对象,选中多个对象时,获取到的是第一个被选中的
- 只能获取Project中的预制体
上手
实现1:Hierarchy窗口中,右键菜单可删除选中的对象
该操作实行后,场景不带*,表示已经保存,不可恢复
[MenuItem("GameObject/my delete",false,10)]
static void Delete()
{
foreach (Object obj in Selection.objects)
{
GameObject.DestroyImmediate(obj);//非运行时
}
}
删除projec下的资源:
GameObject.DestroyImmediate(obj,true);
实现2:unity原本删除Hierarchy中的对象后,可以ctrl+z恢复,实现删除后恢复
该操作实行后,场景带*,可恢复,需手动保存场景
[MenuItem("GameObject/my delete",false,10)]
static void Delete()
{
foreach (Object obj in Selection.objects)
{
Undo.DestroyObjectImmediate(obj);//可以记录操作
}
}