unity小工具之Hierarchy控制物体显示和隐藏

本文介绍如何使用Unity小工具,在Hierarchy窗口中便捷地控制游戏物体的显示和隐藏状态,提升开发效率。
摘要由CSDN通过智能技术生成

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</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值