简介
层级窗口(Hierarchy)用层级树形视图显示场景或资产中的所有 对象(Object),如场景编辑器中的模型、摄像机或预制件,UI 编辑器中的控件和布局。可以使用 层级窗口 对场景中使用的对象进行排序和分组。使用层级窗口,你可以:
- 搜索、选中、创建和删除场景对象。
- 隐藏或锁定对象。
- 调整 对象(Object)层级,建立或编辑对象间的父子级关系。
- 鼠标右键点击该对象即可访问对象的 上下文菜单(context menu) 。然后,可以从该菜单中执行其他特定于对象的操作。
【SandMod_Basics_Hierarchy001.png】
编辑器默认布局下, 层级窗口(Hierarchy)停放在 SandMod 编辑器窗口的左侧。点击查看大图。
显示层级窗口
在 SandMod 编辑器的默认布局下,场景编辑器 和 UI 编辑器 都会有 层级窗口(Hierarchy),如果没有显示或窗口消失,您可以在 菜单栏(Menu)中点选 窗口(Window) > 视图(Panel) > 层级窗口(Hierarchy) 进行显示。
【SandMod_Basics_Hierarchy002.png】
层级窗口构成
层级窗口由以下条目或功能控件构成:
【SandMod_Basics_Hierarchy003.png】
- 创建(Create),点击按钮后,可以选择需要创建的对象进行创建。
- 搜索(Search),使用 层级窗口 中的 搜索 框搜索并快速筛选场景中的对象,形成列表。默认情况下,搜索会显示与搜索词部分匹配的所有对象。如果你使用多个搜索词,只有匹配所有词的对象才会显示。要清除搜索过滤,单击 搜索(Search)框右侧的 × 按钮。
- 根对象条目。
- 对象条目。
- 显示按钮(Display),通过点击对象条目关联的 显示按钮(Display) ,在其他可视化窗口(如场景预览窗口或 UI 画布窗口)快速隐藏或显示 游戏对象,值得注意的是,这仅在 场景预览窗口 中显示或隐藏,不影响游戏的运行效果。
- 锁定按钮(Lock),通过点击对象条目关联的 锁定按钮(Lock),对象被锁定后它们在其他可视化窗口(如场景预览窗口或 UI 画布窗口)为不可被选中状态,防止该对象被误操作,值得注意的是,这仅在其他可视化窗口(如场景预览窗口或 UI 画布窗口)中锁定或解锁,不影响游戏对象的组件、属性和脚本运行功能。
- 计数器(Counter),统计当前层级中包含的对象条目总数。
基础操作
你可以在 层级窗口 中向 对象条目 执行以下操作:
- 选中:鼠标指向层级窗口中的对象条目并左键单击 选择该对象。用于快速修改对象,而不必在其他可视化窗口(如场景预览窗口或 UI 画布窗口)中寻找该对象。
【SandMod_Basics_Hierarchy004.gif】
- 右键:鼠标指向层级窗口中的对象条目并点击右键,将弹出该对象的上下文菜单。
【SandMod_Basics_Hierarchy005.png】
其上下文菜单包含以下基本操作:
| 名称 | 描述 |
|---|---|
| 复制(Copy) | 复制所选对象及其所有子级。 |
| 复制并粘贴(Duplicate) | 在所选对创建所选对象平级的副本。 |
| 剪切(Cut) | 剪切所选对象及其所有子级。 |
| 粘贴(Paste) | 将已经复制或剪切的对象粘贴为所选对象的平级对象。 |
| 重命名(Rename) | 使对象名称可编辑,以便进行更改。按 Enter 键以保存更改,或按 Esc 键以取消重命名。 |
| 删除(Delete) | 删除所选对象及其所有子级。 |
| 展开(Expand) | 将所有对象节点展开。 |
| 折叠(Fold) | 将所有对象节点折叠收起。 |
不同子编辑器的层级窗口上下文菜单会略有不同,具体可以参阅 层级窗口的运用 小节。
- 层级调整:鼠标指向层级窗口中的对象条目后长按左键并拖动, 将所拖动的对象附加为另一个对象的子级,或调整拖动对象的层级顺序。
【SandMod_Basics_Hierarchy006.gif】
管理对象父子级关系
SandMod 编辑器使用父子层级视图或父子化的概念对 对象(Object) 进行分组。可以通过对象间的父子级关系将游戏中的对象链接在一起,成为一个共同移动、旋转的对象集合。移动或旋转顶层对象或父级对象时,也会移动或旋转所有子对象。
| -------------- 如设置 蓝色立方体(BlueCube) 是 红色立方体(RedCube)的子级。 【SandMod_Basics_Hierarchy007.png】 当旋转和移动 红色立方体(RedCube)时,蓝色立方体也会一同移动和旋转。 【SandMod_Basics_Hierarchy008.gif】 -------------- |
还可以创建嵌套父子对象,即一个对象的子对象又包含其他子对象。所有嵌套对象仍然是原始父对象或根对象的后代对象。 子对象会继承父对象的移动和旋转。
【SandMod_Basics_Hierarchy009.png】
图中 Child_A 和 Child_B 是 Parent 的子对象。Child_C 是 Child_B 的子游戏对象,也是 Parent 的后代对象。点击查看大图。
构建子对象
要创建子游戏对象,请执行以下操作:
- 在层级窗口中,将对象拖动到父级对象上,松开鼠标左键,即可创建子级对象。
【SandMod_Basics_Hierarchy010.png】
| -------------- 如此案例,将 Object_4(选定对象)拖动到父游戏对象 Object_1(直至对象条目高亮),以创建 Object_1 de 子游戏对象 Object_4。 【SandMod_Basics_Hierarchy011.gif】 -------------- |
构建同级对象
同级对象 是指与另一个对象具有相同层级的对象。要创建同级对象有以下两种方法:
- 将 对象 层级调整为另一个对象的同级对象。具体操作为:
将 对象 拖动到意向同级对象的上方或下方,使用白色水平线定位对象的顺序,当水平白线顶点与意向同级的对象齐平,松开鼠标左键,即可创建同级对象。
【SandMod_Basics_Hierarchy013.png】
| -------------- 如此案例,将 Object_4(选中对象)拖动到 Object_2 与 Object_3 之间(以白色水平线指示),用于在父级对象 Object_1下方创建与 Object_2 与 Object_3 同级的对象。 【SandMod_Basics_Hierarchy014.gif】 -------------- |
- 可以剪切或复制选定对象,然后将它粘贴为另一个对象的同级对象。具体操作为:
右键单击选定对象,然后选择 剪切(Cut) 或 复制(Copy) ,右键单击意向同级的对象,然后选择 粘贴(Paste) ,即可创建同级对象。
| -------------- 如此案例,将 Object_4(选中对象)剪切(Cut),并将鼠标指向 Object_2 后点击鼠标右键,选择 粘贴(Paste)以在父级对象 Object_1下方创建与 Object_2 同级的对象。 【SandMod_Basics_Hierarchy015.gif】 -------------- |
层级窗口的运用
上述内容是关于层级窗口的基础内容阐述,如果您想了解 场景编辑器(Scene Editor)或 UI 编辑器(UI Editor)中关于 层级窗口(Hierarchy)的内容和使用方法,请先掌握本章基础内容。
场景编辑器层级窗口
在 场景编辑器(Scene Editor)中,层级窗口主要用于管理 场景预览窗口(Scene)中的 游戏对象(GameObject),除了上述功能外,还可以进行多场景编辑、预制体覆盖和解压等功能。
- 多场景编辑(Work With Multiple Scenes),可以在 层级窗口 中同时打开多个场景。详情请参阅 多场景编辑 章节。
- 预制体覆盖(Overlay To Prefab),预制体(Prefab)在层级窗口的修改直接同步到 预制体资产(Prefab Asset)中,从而修改预制体。详情请参阅 通过预制体实例编辑预制体 章节。
- 预制体解压(Prefab Unpack),将预制体实例的内容恢复为常规游戏对象。详情请参阅 打开预制体 章节。
UI 编辑器层级窗口
在 UI 编辑器(UI Editor)中,层级窗口主要用于管理 UI 画布窗口(UI)中的 UI 对象(UI Object),除了上述功能外,UI 对象可在 UI 编辑器层级窗口中复制对象路径,部分 UI 对象 可在 UI 编辑器层级窗口中进行展开层级的操作。
- 复制路径(Copy Path),目前在脚本中获取 UI 对象的唯一方法是通过该 UI 对象在 层级窗口 的层级路径进行获取。使用 API
Canvas.FindChild(UI_type, Path: string)通过复制来的层级路径可以迅速获取该 UI 对象。具体调用 UI 对象路径的方法请查看 API 手册关于 Control.FindChild API 的相关内容。 - UI 对象展开层级(UI Object Expand Child),对于部分组合型 UI 控件(如按钮、滑动条等)可在 UI 编辑器层级窗口对该控件进行展开,让您可以编辑该控件更多细节内容。详情请参阅 展开子节点 章节。
- 脚本联动(Script Linkages),您可以在 UI 编辑器层级窗口对 UI 对象在 自动生成脚本(Automatically Generated Script)中定位、添加交互事件或者删除 UI 对象并清除脚本的对应参数操作。具体操作方法和说明,请参阅 UI 自动生成脚本 章节。
