unity小工具之Hierarchy控制物体显示和隐藏
将该脚本放到unity的Editor文件夹下面就可以了,效果就是在unity的Hierarchy窗口中,能直接控制物体的显示和隐藏
using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
namespace SubjectNerd.QuickToggle
{
[InitializeOnLoad]
public class QuickToggle
{
#region Constants
private const string PrefKeyShowToggle = "UnityToolbag.QuickToggle.Visible";
private const string PrefKeyShowDividers = "UnityToolbag.QuickToggle.Dividers";
private const string PrefKeyShowIcons = "UnityToolbag.QuickToggle.Icons";
private const string PrefKeyGutterLevel = "UnityToolbag.QuickToggle.Gutter";
private const string MENU_NAME = "Window/Hierarchy Quick Toggle/Show Toggles";
private const string MENU_DIVIDER = "Window/Hierarchy Quick Toggle/Dividers";
private const string MENU_ICONS = "Window/Hierarchy Quick Toggle/Object Icons";
private const string MENU_GUTTER_0 = "Window/Hierarchy Quick Toggle/Right Gutter/0";
private const string MENU_GUTTER_1 = "Window/Hierarchy Quick Toggle/Right Gutter/1";
private const string MENU_GUTTER_2 = "Window/Hierarchy Quick Toggle/Right Gutter/2";
#endregion
private static readonly Type HierarchyWindowType;
private static readonly MethodInfo getObjectIcon;
private static bool stylesBuilt;
private static GUIStyle styleLock, styleUnlocked,
styleVisOn, styleVisOff,
styleDivider;
private static bool showDivider, showIcons;
#region Menu stuff
[MenuItem(MENU_NAME, false, 1)]
private static void QuickToggleMenu()
{
bool toggle = EditorPrefs.GetBool(PrefKeyShowToggle);
ShowQuickToggle(!toggle);
Menu.SetChecked(MENU_NAME, !toggle);
}
[MenuItem(MENU_NAME, true)]
private static bool SetupMenuCheckMarks()
{
Menu.SetChecked(MENU_NAME, EditorPrefs.GetBool(PrefKeyShowToggle));
Menu.SetChecked(MENU_DIVIDER, EditorPrefs.GetBool(PrefKeyShowDividers));
Menu.SetChecked(MENU_ICONS, EditorPrefs.GetBool(PrefKeyShowIcons));
int gutterLevel = EditorPrefs.GetInt(PrefKeyGutterLevel, 0);
gutterCount = gutterLevel;
UpdateGutterMenu(gutterCount);
return true;
}
[MenuItem(MENU_DIVIDER, false, 20)]
private static void ToggleDivider()
{
ToggleSettings(PrefKeyShowDividers, MENU_DIVIDER, out showDivider);
}
[MenuItem(MENU_ICONS, false, 21)]
private static void ToggleIcons()
{
ToggleSettings(PrefKeyShowIcons, MENU_ICONS, out showIcons);
}
private static void ToggleSettings(string prefKey, string menuString, out bool valueBool)
{
valueBool = !EditorPrefs.GetBool(prefKey);
EditorPrefs.SetBool(prefKey, valueBool);
Menu.SetChecked(menuString, valueBool);
EditorApplication.RepaintHierarchyWindow();
}
[MenuItem(MENU_GUTTER_0, false, 40)]
private static void</