UnityEditor – Hierarchy 层级扩展(二) 显示与结合对象的功能实现

上集回顾

上一讲讲到了图标绘制,没有实现功能,这么做是有原因的,跟据我的分析,主要原因工作量太大,假如一次性吃完一个饼,我撑死,所以一点一点的来,之前有尝试想过,由于越想执行难度越大,在想的阶段就导致我放弃了写作。

so~ 慢慢来,会比较快,只要坚持!借用一句俗话:慢,才是快。

先上目标:

目标如题

  1. 在层级中结合、展开对象。
  2. 在层级中控制显示与隐藏对象。

 

准备工作:

层级中收缩对象,这东西在Unity提供的API中,有一个 Object.hideFlags 与功能想似

public enum HideFlags
{
None = 0,
HideInHierarchy = 1,
HideInInspector = 2,
DontSaveInEditor = 4,
NotEditable = 8,
DontSaveInBuild = 16,
DontUnloadUnusedAsset = 32,
DontSave = 52,
HideAndDontSave = 61
}

从字面上看,这是设置一个对象的显示隐藏的标签,我们的需要是在这个对象下,把它所有的子对象给进行收起,不过无妨,也就是稍微绕一绕。HideInInspector 这个值正是想要的。

另外添加与删除标签最好别用等号赋值,或与运算代替

添加   obj.hideFlags |= flag;

删除   obj.hideFlags &= ~flag;


 

实践

仍然是 Editor 文件夹下的 KMHierarchy 类,里面添加方法

1.结合与展开对象

2.对象的显示与隐藏

当然最重要的一步在回调方法中调绘制的方法:

效果对比展示,你会发现层级被收缩了起来。

demo_hierarchy_011 demo_hierarchy_012


已知BUG

当点击 收缩/展开 的图标时,场景检测并不会改变,此时你即使Ctrl + S保存场景也是无用的,这应该为Unity的BUG,我的版本是5.3.1f1,其中我观看了两个插件 2dToolKit 和 Hierarchy2 两个插件存在的问题。

如果有好的方法请留言,或者联系作者~

可以改进的地方

图标都是用的白色的,我们可以加入颜色,当然这还得考虑到我们可以切换Unity的背影颜色。

但是说白了,这都不是事。


 

标签中 NotEditable  应该为不可编辑状态,这个东西也可以做成功能。

血源诅咒还差最后一个杯就白金了,玩去。