Unity3D:Hierarchy 窗口
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
Hierarchy 窗口
![打开 Unity 新项目时的默认 Hierarchy 窗口视图](https://docs.unity3d.com/cn/current/uploads/Main/Hierarchy_01.png)
Hierarchy 窗口显示场景中的每个游戏对象,如模型、摄像机或预制件。 可以使用 Hierarchy 窗口对场景中使用的游戏对象进行排序和分组。 在 Scene 视图中添加或移除游戏对象时,也会从 Hierarchy 窗口添加或移除它们。
Hierarchy 窗口还可以包含其他场景,每个场景都包含自己的游戏对象。
父子化
Unity 使用父子层级视图或父子化的概念对游戏对象进行分组。 一个对象可以包含继承其属性的其他游戏对象。 可以将游戏对象链接在一起以帮助移动、缩放或变换游戏对象的集合。 移动顶层对象或父游戏对象时,也会移动所有子游戏对象。
还可以创建嵌套父子游戏对象。 所有嵌套对象仍然是原始父游戏对象或根游戏对象的后代。
子游戏对象会继承父游戏对象的移动和旋转。 要了解与此相关的更多信息,请参阅关于变换组件的文档。
![Child 1 和 Child 2 是 Parent 的子游戏对象。 Child 3 是 Child 2 的子游戏对象,也是 Parent 的后代游戏对象。](https://docs.unity3d.com/cn/current/uploads/Main/HierarchyParenting1_01.png)
组织游戏对象
创建新的游戏对象
要在 Hierarchy 窗口中创建新游戏对象,请执行以下操作:
- 右键单击选定场景中的空白区域。
- 选择要创建的游戏对象。
也可以按 Ctrl+Shift+N (Windows) 或 Command+Shift+N (macOS) 以创建新的空游戏对象。
注意:新游戏对象会自动在“重命名”模式下创建。 要禁用此行为,请选择 Hierarchy 窗口中的 More (⋮) 菜单并取消选择 Rename New Objects。
切换子游戏对象可见性
要切换子游戏对象的可见性,请执行以下操作:
- 选择父游戏对象左侧的下拉箭头 (►)。
- 按 Alt 的同时单击下拉箭头 (►) 以切换根游戏对象的所有后代游戏对象的可见性。
- 再次选择下拉箭头 (▼) 以折叠所有后代游戏对象。
创建子游戏对象
要创建子游戏对象,请执行以下操作:
- 在 Hierarchy 窗口中,将游戏对象拖动到父游戏对象上。
![将 Object 4(选定对象)拖动到父游戏对象 Object 1(以蓝色突出显示)以创建子游戏对象。](https://docs.unity3d.com/cn/current/uploads/Main/HierarchyParenting2.png)
创建父游戏对象
可以将新游戏对象作为现有游戏对象的父项添加到 Hierarchy 视图中。
要创建父游戏对象,请执行以下操作:
- 右键单击游戏对象,或选择同一级别上的多个游戏对象并单击右键。
- 选择 Create Empty Parent。
也可以按 Ctrl+Shift+G (Windows) 或 Command+Shift+G (macOS) 以创建父游戏对象。
注意:如果设置了默认父游戏对象,则 Create Empty Parent 会将新游戏对象创建为默认父项的子项,而不是选定游戏对象的父项。
创建同级游戏对象
同级游戏对象是与另一个子游戏对象具有相同层级的游戏对象。 要创建同级游戏对象,请执行以下操作:
- 将游戏对象拖动到现有游戏对象的上方或下方。
- 使用水平蓝色线确定游戏对象的顺序。
![将 Object 4(选定对象)拖动到 Object 2 与 Object 3 之间(以蓝色水平线指示),以在父游戏对象 Object 1(以蓝色突出显示)下方创建同级游戏对象。](https://docs.unity3d.com/cn/current/uploads/Main/HierarchyParenting3_01.png)
复制游戏对象
要复制游戏对象,请右键单击目标游戏对象并选择 Duplicate。
也可以按 Ctrl+D (Windows) 或 Command+D (macOS) 以复制选定游戏对象。
将游戏对象粘贴为子对象
可以剪切或复制选定游戏对象,然后将它粘贴为另一个游戏对象的子项。 粘贴的子游戏对象会保留其世界位置。
要将游戏对象粘贴为子项,请执行以下操作:
- 右键单击选定游戏对象,然后选择 Cut 或 Copy。
- 右键单击预期父游戏对象,然后选择 Paste as Child。
也可以按 Ctrl+Shift+V (Windows) 或 Command+Shift+V (macOS) 以将游戏对象粘贴为子项。
使用默认父级组织游戏对象
可以将 Hierarchy 窗口中的任何游戏对象设为“默认父项”。 将游戏对象拖动到 Scene 视图中时,Unity 会自动将该游戏对象设为设置为默认父项的游戏对象的子项。
要将游戏对象设为默认父项:
- 在 Hierarchy 窗口中,右键单击游戏对象。
- 选择 设置为默认父级。
将游戏对象拖动到 Scene 视图中时,在 Hierarchy 窗口中,子游戏对象会在默认父游戏对象下方缩进。 默认父游戏对象的名称为粗体。
![在此图中,Cube 游戏对象是默认父项。 用户将 Car 游戏对象拖动到 Scene 视图中时,Unity 会自动将它设为 Cube 游戏对象的子项。](https://docs.unity3d.com/cn/current/uploads/Main/default-parent.png)
要从游戏对象中移除默认父项状态,请执行以下操作:
- 在 Hierarchy 窗口中,右键单击游戏对象。
- 选择 Clear Default Parent。
以前是默认父项的游戏对象的名称不再是粗体。 将游戏对象拖动到 Scene 视图中时,它会出现在 Hierarchy 窗口的顶层。 换句话说,Unity 不会将此游戏对象设为以前是默认父项的游戏对象的子项。
![在此图中,Hierarchy 窗口中没有游戏对象设置为默认父项。 用户将 Car 游戏对象拖动到 Scene 视图中时,Unity 会在层级视图顶层添加它。](https://docs.unity3d.com/cn/current/uploads/Main/no-default-parent.png)
每个场景只能设置一个默认父项。 在 Hierarchy 窗口中,如果将一个游戏对象设置为默认父项,然后将同一场景中的不同游戏对象设为默认父项,则只有第二个游戏对象是默认父项。
如果在 Hierarchy 窗口中有多个场景,并且在每个场景中设置了默认父项,则在将游戏对象拖动到 Scene 视图时,Unity 会将活动场景中的默认父游戏对象设为新游戏对象的父项。
![在此图中,Scene1 和 Scene2 中的 Cube 游戏对象设置为默认父项。 Unity 将 Scene1 中的 Cube 设置为 Car 游戏对象的父项,因为 Scene1 是活动场景。](https://docs.unity3d.com/cn/current/uploads/Main/multi-scene-default-parent.png)
可以在 Shortcuts Manager 中为默认父项设置来设置键盘快捷键。 在 Shortcuts 窗口中,将键盘快捷键分配给 Hierarchy 视图 > Set as Default Parent。 如果未设置默认父项,并且在 Hierarchy 窗口中选择了游戏对象,请使用快捷键将此游戏对象设为默认父项。 设置默认父项后,使用快捷键可从任何具有它的游戏对象中移除默认父项状态。
设置场景可见性和可选取性
单击场景可见性图标可在 Scene 视图中隐藏和显示游戏对象,而无需更改它们在应用程序中的可见性。
选择场景拾取图标可切换是否能够在编辑期间在 Scene 视图中选择游戏对象。
这些控件在处理难以查看和选择特定游戏对象的大型或复杂场景时非常有用。
![场景可见性图标/开关](https://docs.unity3d.com/cn/current/uploads/Main/SceneVisIconsHierarchy_01.png)
有关更多信息,请参阅场景可见性和场景拾取文档。
对游戏对象进行排序
默认情况下,Hierarchy 窗口会按创建顺序列出游戏对象。 可以在场景中向上或向下拖动选定游戏对象以更改游戏对象的顺序。
字母数字排序
要按字母数字顺序对游戏对象进行排序,请执行以下操作:
- 选择 Edit > Preferences (Windows) 或 Unity > Preferences (macOS)。
- 选择 Enable Alphanumeric Sorting。
选择后,一个图标会出现在 Hierarchy 窗口中,允许在 Transform 排序(默认值)或 Alphabetical 排序之间切换。
![](https://docs.unity3d.com/cn/current/uploads/Main/AlphanumericToggle_01.png)
多场景编辑
可以在 Hierarchy 窗口中同时打开多个场景。 有关更多信息,请参阅多场景编辑页面。
覆盖指示器
在场景中编辑预制件实例时,Unity 会在层次结构中的父游戏对象旁边显示一个指示器。此指示器突出显示在其任何子游戏对象中具有非默认覆盖值的任何预制件。要直接从“层次结构”窗口打开“覆盖”下拉列表,请单击覆盖指示器。覆盖指示器在边距左侧显示为蓝线,与“检查器”窗口中的实例覆盖相同。有关更多信息,请参阅 实例覆盖。
![此图显示了当预制件 A 的子级游戏对象 C 的值处于非默认状态时,预制件 A 旁边显示的覆盖指示器。](https://docs.unity3d.com/cn/current/uploads/Main/hierarchy-override-indicator.png)
此文由3D建模学习工作室整理翻译,转载请注明出处!