【编辑器扩展篇】二、扩展Hierarchy视图

Hierarchy视图中出现的都是游戏对象,这些对象之间同样具有一定的关联关系。我们可以用树状结构来表示游戏对象之间复杂的父子关系。Hierarchy视图中的游戏对象会通过摄像机最终投影在发布的游戏中。
1、拓展菜单
在Hierarchy视图中,也可以对Create菜单项进行扩展。


2、拓展布局
在Hierarchy视图中,同样可以对布局进行拓展。


3、重写菜单
Hierarchy视图中的菜单可以在原有基础上拓展,如果想彻底抛弃它的菜单项,就需要我们重写菜单,先用鼠标选择一个游戏对象,点击右键即可弹出我们的重写菜单,这个菜单项已经和Unity自带的完全不一样了,它的工作原理就是监听点击事件,打开一个新的菜单窗口。


在上述代码中,使用Event.current来获取当前的事件。当监听到鼠标抬起的事件后,并且满足游戏对象的选中状态,开始执行自定义事件。其中,EditorUtility.DisplayPopupMenu用于弹出自定义菜单,Event.current.Use()的含义是不再之星原有的操作,所以就实现了重写菜单。
此外,Hierarchy视图还可以重写系统自带的菜单行为。


因为系统自带的菜单创建Image时会自动勾选RaycastTarger,但我们重写了Image组件的菜单,就避免了图片不需要处理点击事件时带来的而外开销,但需要通过脚本自行创建Image对象和组件。接着,获取到Image组件对象,直接设置它的raycastTarget属性即可。