news 2026/5/11 7:48:02

unity3d scene窗口选中物体, 在 hierarchy高光显示

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
unity3d scene窗口选中物体, 在 hierarchy高光显示

在 Unity 中实现 “Scene 窗口选中物体时 Hierarchy 面板高光显示”,核心思路是监听 Scene 窗口的选择事件,并通过 Unity 的EditorGUIUtilityEditorWindow相关 API 主动高亮 Hierarchy 面板中对应的物体条目。以下是完整的实现方案:

using UnityEditor; using UnityEngine; using System.Reflection; /// <summary> /// Scene选中物体时,Hierarchy面板自动高光显示该物体 /// </summary> [InitializeOnLoad] public class HierarchyHighlightOnSceneSelect { // 静态构造函数,Editor启动时初始化 static HierarchyHighlightOnSceneSelect() { // 监听选择变更事件 Selection.selectionChanged += OnSelectionChanged; } private static void OnSelectionChanged() { // 仅处理选中单个GameObject的情况(可根据需求修改为多物体) if (Selection.activeGameObject != null) { // 核心API:让Hierarchy高亮并滚动到目标物体 EditorGUIUtility.PingObject(Selection.activeGameObject); // 【可选】强制刷新Hierarchy窗口(解决部分版本高亮不生效问题) RefreshHierarchyWindow(); } } /// <summary> /// 强制刷新Hierarchy窗口(通过反射调用私有方法) /// </summary> private static void RefreshHierarchyWindow() { try { // 获取Hierarchy窗口实例 EditorWindow hierarchyWindow = EditorWindow.GetWindow(Type.GetType("UnityEditor.SceneHierarchyWindow, UnityEditor")); if (hierarchyWindow == null) return; // 通过反射调用Hierarchy窗口的刷新方法 MethodInfo refreshMethod = hierarchyWindow.GetType().GetMethod("Refresh", BindingFlags.NonPublic | BindingFlags.Instance); refreshMethod?.Invoke(hierarchyWindow, null); } catch (System.Exception e) { Debug.LogWarning("刷新Hierarchy失败:" + e.Message); } } // 【可选】防止内存泄漏,编辑器关闭时移除事件监听 [InitializeOnLoadMethod] private static void Cleanup() { AssemblyReloadEvents.beforeAssemblyReload += () => { Selection.selectionChanged -= OnSelectionChanged; }; } } /* * 1. 支持多物体选中高亮 * 修改OnSelectionChanged方法,遍历所有选中物体: * private static void OnSelectionChanged() { if (Selection.gameObjects.Length > 0) { // 高亮最后一个选中的物体(Unity默认选中逻辑) GameObject target = Selection.gameObjects[Selection.gameObjects.Length - 1]; EditorGUIUtility.PingObject(target); RefreshHierarchyWindow(); } } */ /* * 2. 自定义高亮样式(进阶) * 如果需要自定义高亮颜色 / 效果(如边框、背景色),需重写 Hierarchy 的绘制逻辑: // 在原有类中添加以下代码 static HierarchyHighlightOnSceneSelect() { Selection.selectionChanged += OnSelectionChanged; // 注册Hierarchy绘制回调 EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyItemGUI; } private static void OnHierarchyItemGUI(int instanceID, Rect selectionRect) { // 获取当前绘制的物体 GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject; if (go == null) return; // 如果是选中的物体,绘制自定义高亮 if (Selection.Contains(go)) { // 绘制高亮背景 EditorGUI.DrawRect(selectionRect, new Color(0.2f, 0.5f, 1f, 0.3f)); // 绘制边框 Rect borderRect = selectionRect; borderRect.width = 2; EditorGUI.DrawRect(borderRect, Color.cyan); } } */

使用说明

  1. 将脚本放在 Unity 项目的Editor文件夹下(若无则新建);
  2. 无需附加到任何物体,Editor 启动时自动生效;
  3. 在 Scene 窗口点击选中物体,Hierarchy 面板会自动定位并高亮该物体。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 13:25:32

二、python语法基础

一、前言与概述前面了解了python安装以及环境的准备&#xff0c;下面是关于python语法基础的一个概要&#xff1a;二、语法内容&#xff08;一&#xff09;、基础语法开始之前&#xff1a;注释代码# 单行注释 """ 多行注释 """多行注释 1、变量与…

作者头像 李华
网站建设 2026/5/6 8:25:09

2025动漫剧本推荐,无需成本轻松创作

2025动漫剧本推荐&#xff0c;无需成本轻松创作动漫作为一种深受大众喜爱的艺术形式&#xff0c;拥有着庞大的受众群体。而一个优秀的动漫剧本&#xff0c;则是动漫作品成功的关键。在2025年&#xff0c;有哪些值得推荐的动漫剧本创作工具呢&#xff1f;本文将为您介绍一款无需…

作者头像 李华
网站建设 2026/5/10 16:19:01

Linux 进程管理

在 Linux C/C 开发中&#xff0c;进程管理是系统编程的核心知识点之一。从父子进程的创建、进程的终止到僵尸进程的避免&#xff0c;每一个环节都影响着程序的稳定性。本文将从基础概念到实践代码&#xff0c;详细讲解 Linux 进程管理的关键技术。一、父子进程&#xff1a;写时…

作者头像 李华
网站建设 2026/5/9 20:08:53

JS函数语法(重点)

函数声明&#xff08;命名函数&#xff09;语法&#xff1a;function 函数名(参数) { 函数体; return 返回值 }// 求和函数 function sum(a, b) {return a b; // 返回值&#xff0c;无 return 则返回 undefined }// 调用函数 let result sum(1, 2); console.log(result); // …

作者头像 李华
网站建设 2026/5/4 8:05:43

SpringMVC的拦截器和过滤器有什么区别?执行顺序?

大家好&#xff0c;我是锋哥。今天分享关于【SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序&#xff1f;】面试题。希望对大家有帮助&#xff1b; SpringMVC的拦截器和过滤器有什么区别&#xff1f;执行顺序&#xff1f; 超硬核AI学习资料&#xff0c;现在永久免费…

作者头像 李华
网站建设 2026/4/30 19:43:57

Vue3 实时音频录制与转写 Composable 技术实现

Vue3 实时音频录制与转写 Composable 技术实现 前言 本文介绍如何基于 Vue3 Composition API 实现一个实时音频录制与转写的 Composable&#xff0c;涉及 Web Audio API、WebSocket 实时通信、音频格式转换等技术。 技术栈 Vue3 Composition API: 组合式函数封装MediaRecorder …

作者头像 李华