UnityEditor – Hierarchy 层级扩展

~~~~

以此文向劳动致敬

层级是一个场景里面的游戏对象的目录形式,正常的层级:

demo_hierarchy_001

加了特效之后的层级:

demo_hierarchy_002 demo_hierarchy_003

Duang Duang Duang ~~~

加了特效之后与与原层级的区别:

  1. 在层级中控制游戏对象的Active(显示隐藏)状态
  2. 游戏对象的各种状态显示
  3. 更清楚的游戏对象层次
  4. 控制游戏对象的可编辑状态
  5. 等等等等。。

切入

主题:如何进入绘制,代码入口API在哪里,别急,先把问题分析进行剖析:

  1. 上图中五颜六色的图标不是程序写出来的,是美术图标,得准备素材。
  2. 应用面象对象的思考方式,层级不是一下子绘制出来的,是一个对象一个对象的来的。
  3. 应该准确的取得绘制的坐标

关于图标上再加入事件这些问题,解决了首要问题,那就迎刃而解了。

找API什么的最好的方式就是看别人已经有的代码,层级回调主要来自这个委托

EditorApplication.hierarchyWindowItemOnGUI

public delegate void HierarchyWindowItemCallback(int instanceID, Rect selectionRect);

委托返回一个instanceID,此为游戏对象ID,Rect就是游戏对象在层级的绘制的区域,也就是说我们能找到需要的绘制图标的坐标。

有这了个id,就可以取到游戏对象,有了游戏对象,就可以取得与修改这个游戏对象的各种参数。

上代码前,先截个图

demo_hierarchy_004

很多脚本是我写其它工具时的,由于层级我也想写成工具,所以就放一起了,请无视。

如上图所示,先写一个取图标的方法:新建一个脚本 KMHierarchy ,如上图在Editor目录之下,系统引用加入:

另外为了方便,我封装了一个关于Rect的类:新建一静态类,最好放在Plugins目录下,这样编辑器和游戏主代码都可以访问

准备工作完毕,开始代码主体:

类上边的

必须加入,不然不会走方法

先到这里吧

下次就把具体的方法给写上,收缩子对象禁止编辑应该是一个重要的研究方向。 

2 Replies to “UnityEditor – Hierarchy 层级扩展”