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

本文介绍了一个Unity编辑器脚本,该脚本允许用户通过快捷键批量更改场景中多个选定游戏对象的激活状态。使用此脚本,只需简单地将其放置在Unity项目的Editor文件夹内,并按下指定的快捷键,即可快速切换选中物体及其子物体的激活或禁用状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

把以下脚本放在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值