Unity功能——编辑器模式下隐藏/显示游戏对象的快捷方法

声明:本文为个人笔记,用于学习研究使用非商用,内容为个人研究及综合整理所得,若有违规,请联系,违规必改。


Unity功能——编辑器模式下隐藏/显示游戏对象的快捷方法



一.开发环境

unity20XX.X.X
VS20XX


二.问题描述

在编辑器模式下,想快捷的显示/隐藏一个游戏对象.


三.解决方案原理及代码

实现原理:

对组件进行扩展方法.对MonoBehaviour ,Transform,GameObject 组件进行扩展方法
快捷键为Ctrl+Shift+H
注意:因为使用了UnityEditor命名空间,该脚本放在Editor 文件夹下.

对应代码:

/********************************************************************
* 版本声明: v1.0.0
* 类 名 称:ShowOrHideObjByInspect.cs
* 作者名称:明哲
* 创建日期:
* 对应U3D:Unity2018.2.3
* 功能描述:显示或隐藏Inspector面板上物体
*********************************************************************/
using UnityEditor;
using UnityEngine;

namespace MZ
{
    
    
    public class ShowOrHideObjByInspectTool : ScriptableObject
    {
    
    
        public const string KeyName = "MZSDK/Tools/显示隐藏物体 %#h";

        //根据当前有没有选中物体来判断可否用快捷键
        [MenuItem(KeyName, true)]
        static bool ValidateSelectEnableDisable()
        {
    
    
            GameObject[] go = GetSelectedGameObjects();

            if (go == null || go.Length == 0)
                return false;
            return true;
        }

        [MenuItem(KeyName)]
        static void SeletEnable()
        {
    
    
            bool enable = false;
            GameObject[] gos = GetSelectedGameObjects();

            foreach (GameObject go in gos)
            {
    
    
                enable = !go.activeInHierarchy;
                EnableGameObject(go, enable);
            }
        }

        //获得选中的物体
        static GameObject[] GetSelectedGameObjects()
        {
    
    
            return Selection.gameObjects;
        }

        //激活或关闭当前选中物体
        public static void EnableGameObject(GameObject parent, bool enable)
        {
    
    
            parent.gameObject.SetActive(enable);
        }
    }
}

四.总结

保持饥饿,保持愚蠢.
这世界唯一能够相信的就是你付出的努力和你走过的路.

猜你喜欢

转载自blog.csdn.net/weixin_45532761/article/details/129471623