实现的功能如下图

可以在对象的右侧画一个小图标,代码如下,放到Editor目录下,代码注释较多,就不详细介绍了

using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
[InitializeOnLoad]
public class DrawHierarchyLockIcon
{// 层级窗口项回调private static readonly EditorApplication.HierarchyWindowItemCallback hiearchyItemCallback;//放在Hierarchy 面板右边的图片static Texture2D lockIcon = Resources.Load<Texture2D>("Ads/lock");/// <summary>/// 静态构造/// </summary>static DrawHierarchyLockIcon(){//初始化层级窗口项回调DrawHierarchyLockIcon.hiearchyItemCallback = new EditorApplication.HierarchyWindowItemCallback(DrawHierarchyLockIcon.IconsOnGUI);//加到委托列表EditorApplication.hierarchyWindowItemOnGUI = (EditorApplication.HierarchyWindowItemCallback) Delegate.Combine(EditorApplication.hierarchyWindowItemOnGUI,DrawHierarchyLockIcon.hiearchyItemCallback);}//添加了对应脚本的游戏对象static Dictionary<int, GameObject> lockRendererTable = new Dictionary<int, GameObject>();//绘制图片放在 Hierarchy 面板右边internal static void IconsOnGUI(int instanceId, Rect selectionRect){//获取有特定脚本的对象ItemLock[] arr = UnityEngine.Object.FindObjectsOfType<ItemLock>();//ItemLock 对象挂的脚本的类型,可以是任意脚本//存放到字典foreach (ItemLock item in arr){lockRendererTable[item.gameObject.GetInstanceID()] = item.gameObject;}//生成放图片的矩形Rect r = new Rect(selectionRect);//如果当前的对象是要绘制的对象if (lockRendererTable.ContainsKey(instanceId)){//如果移除了对应的脚本就不绘制if (lockRendererTable[instanceId].GetComponent<ItemLock>() != null)//ItemLock 对象挂的脚本的类型,可以是任意脚本{//矩形赋值r.x = r.width - 15;r.width = 15;//GUI绘制GUI.Label(r, lockIcon);}}}
}

跟新一下,这个脚本不能给不活动的对象加,而且只能加最多一个图标

新版修复了这些功能,如果有多个组件会显示2个图标而且图标的位置有了一点调整,不活动的对象现在也会被加图标了

using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
[InitializeOnLoad]
public class DrawHierarchyLockIcon
{// 层级窗口项回调private static readonly EditorApplication.HierarchyWindowItemCallback hiearchyItemCallback;//放在Hierarchy 面板右边的图片static Texture2D lockIcon = Resources.Load<Texture2D>("Ads/lock");/// <summary>/// 静态构造/// </summary>static DrawHierarchyLockIcon(){//初始化层级窗口项回调DrawHierarchyLockIcon.hiearchyItemCallback = new EditorApplication.HierarchyWindowItemCallback(DrawHierarchyLockIcon.IconsOnGUI);//加到委托列表EditorApplication.hierarchyWindowItemOnGUI = (EditorApplication.HierarchyWindowItemCallback) Delegate.Combine(EditorApplication.hierarchyWindowItemOnGUI,DrawHierarchyLockIcon.hiearchyItemCallback);}//添加了对应脚本的游戏对象static Dictionary<int, GameObject> lockRendererTable = new Dictionary<int, GameObject>();//绘制图片放在 Hierarchy 面板右边internal static void IconsOnGUI(int instanceId, Rect selectionRect){//获取有特定脚本的对象ItemLock[] arr = Resources.FindObjectsOfTypeAll<ItemLock>(); //ItemLock 对象挂的脚本的类型,可以是任意脚本//存放到字典foreach (ItemLock item in arr){lockRendererTable[item.gameObject.GetInstanceID()] = item.gameObject;}//生成放图片的矩形Rect r = new Rect(selectionRect);//如果当前的对象是要绘制的对象if (lockRendererTable.ContainsKey(instanceId)){//如果移除了对应的脚本就不绘制if (lockRendererTable[instanceId].GetComponent<ItemLock>() != null) //ItemLock 对象挂的脚本的类型,可以是任意脚本{//矩形赋值r.xMin = 0;r.x = r.width - 15;r.width = 15;//GUI绘制GUI.Label(r, lockIcon);if (lockRendererTable[instanceId].GetComponents<ItemLock>().Length != 1){//多余的加了锁的脚本//GUI绘制var tempR = r;tempR.position += new Vector2(-20, 0);GUI.Label(tempR, lockIcon);}}}}
}

Unity 拓展功能之 Hierarchy面板右侧小图标功能相关推荐

  1. windows任务栏右侧小图标显示不完整

    之前发现windows电脑右侧小图标显示不完整 百度了一下,只需要新建一个bat文件,内容是 cd /d %userprofile%\AppData\Local\Microsoft\Windows\E ...

  2. html5画板功能,JS实现canvas简单小画板功能

    本文实例为大家分享了JS实现canvas简单小画板的具体代码,供大家参考,具体内容如下 Html部分: Document CSS部分: *{ margin: 0; padding: 0; list-s ...

  3. 仿 微信/QQ 实现小程序功能 -IOS

    仿 微信/QQ 实现小程序功能 -IOS 1. 需求 首先,来大致看一下 微信/QQ 小程序的功能. Android端: 点击图标进入小程序,会新开一个任务栈,每个小程序一个任务栈(有的机型所有小程序 ...

  4. Unity编辑器拓展之三:拓展Unity的Hierarchy面板

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 正文 效果图: 上图中在Hierarchy右侧绘制了Toggle,Label,以及自定义的texture和Unity原声的T ...

  5. Unity全面入门笔记3-Game面板与Hierarchy面板

    初识Unity Game面板 Game面板的作用 Game面板是游戏试玩窗口,展示的是游戏中渲染的实际场景.在Game面板中不能直接通过拖动来移动.旋转.缩放物体,也不能在Game面板中直接点击选中物 ...

  6. android自定义可扩展面板,一日一技 | 用 Windows 10 自带功能实现大屏、小屏无线扩展...

    如果你像我一样使用两台 Windows 设备进行办公,将其中一台设备(一般是笔记本.平板或二合一设备)当作「第二屏」.扩展主要设备的屏幕显示内容是很容易遇到的需求 -- 比如将台式机桌面上的窗口「扔」 ...

  7. Unity 之 打包参数 -- Player面板属性详解

    Unity 之 Project Setting -- Player 面板属性详解 前言 一,Player 1.1 属性说明 1.2 效果展示 二,ICON(图标) 2.1 属性说明 2.2 使用示例 ...

  8. 微信小程序图标不支持html,微信小程序实现自定义加载图标功能

    效果图 实现思路 1.首先通过HTML+CSS实现加载动画的静态效果: 2.根据需求给每个动画设计不同的动画效果. 例如第一个加载图标的静态绘制 1.首先确定动画的盒子宽高: 2.设置盒子中每一个长方 ...

  9. 用python做一个数据查询软件_使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...

最新文章

  1. 压缩感知及应用 源代码_【DMD应用】基于压缩感知超分辨鬼成像
  2. 日常该怎么处理繁杂的工作?用智办事更有序、高效!
  3. 年轻,误把unix当linux
  4. 【AI白身境】只会用Python?g++,CMake和Makefile了解一下​​​​​​​
  5. VBA学习笔记(一):自动添加代码VBA修改注册表
  6. cocos2d-x win8下的环境配置和建立项目
  7. Kafka基础知识入门
  8. 人工智能必看的 45 篇论文(附下载地址)
  9. 安全密码存储–请勿做的事和Java示例
  10. 工业机器人滑膜变结构控制技术_机器人智能滑模变结构控制方法的研究
  11. 精选9个不错的HTML5播放器
  12. linux系统关于mysql的命令_[操作系统]Linux 操作MySql命令
  13. 【动态规划】P1220:区间dp:关路灯
  14. python编写一个程序、判断用户输入的数是正数还是负数_编写一个程序,判断用户输入的数是正数还是负数。_学小易找答案...
  15. 简约卡通双十一营销策划PPT模版
  16. pyecharts饼图pie制作
  17. 博雅互动android面试题,【博雅互动怎么样?】-看准网
  18. WIN8.1硬盘安装及skype打英国免费电话激活
  19. Blender关于雕刻
  20. Java数组实现冒泡排序

热门文章

  1. 导出带下拉选项的Excel基于EasyExcel实现
  2. HtmlUnit使用总结
  3. 5G NR 随机接入RACH流程(6)-- Msg3/4与Contention Resolution
  4. 五种方法教你解除电脑开机密码
  5. 函数TrackPopupMenu()
  6. 荣誉 | 百望云荣登“2022全球独角兽企业500强”榜单
  7. 陈水冬:励志戎马寄情翰墨
  8. 手机利用USB线连接电脑上网(安卓智能手机)
  9. 光反射与折射向量方向计算详解(基于Ray Tracing in One Weekend这本书)
  10. bzoj1001/BJOI2006 灰太狼抓到的兔子