您的位置:首页 > 移动开发 > Unity3D

UNITY3D中 快捷键控制Hierarchy面板中gameObject的激活状态

2014-07-10 16:09 633 查看
把以下脚本放在unity工程文件夹内的Editor 文件夹下 ,选中多个物体 按下 “command 加shift 加 d ”即可改变选中物体的激活状态
//          MyEditorTool.cs
using UnityEngine;
using UnityEditor;
using System;

public class MyEditorTool : ScriptableObject
{
//  设置菜单Tool 下的 MyTool 下的 Enable\Disable Multi GameObj 快捷键为  command 加shift 加 d  <MAC上的>
public const string MENU_DISABLE_SELECTED_GAMEOBJ = "Tool/MyTool/Enable\\Disable Multi GameObj %#d";   //%#d 即代表 command 加shift 加 d快捷键

[MenuItem(MENU_DISABLE_SELECTED_GAMEOBJ,true)]
static bool ValidateSelectEnableODisable ()
{
GameObject[] gobj = GetSelectedGameObject () as GameObject[];
if (gobj == null) {
return false;
}
if (gobj.Length == 0) {
return false;
}
return true;

}

[MenuItem(MENU_DISABLE_SELECTED_GAMEOBJ)]
static void SelectEnableODisable ()
{
GameObject[] gobj = GetSelectedGameObject () as GameObject[];
bool enable = !gobj [0].active;
foreach (GameObject go in gobj) {
EnableODisableChildNote (go.transform, enable);
}
}
//激活或者关闭选中的物体及其子物体
public static void EnableODisableChildNote (Transform parent, bool enable)
{
parent.gameObject.active = enable;
for (int i = 0; i < parent.childCount; i++) {
Transform child = parent.GetChild (i);
if (child.childCount != 0) {
EnableODisableChildNote (child, enable);
}  else {
child.gameObject.active = enable;
}
}
}
// 返回选中的物体
static GameObject[] GetSelectedGameObject ()
{
return Selection.gameObjects;
}
}
转载自博客 http://blog.sina.com.cn/s/blog_6b3661a901013dh7.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: