变换组件 (Transform) 存储游戏对象的位置、旋转、缩放和父子关系状态。游戏对象始终附加一个变换组件:您无法删除变换组件或创建没有变换组件的游戏对象。
变换组件确定每个对象在场景中的位置、旋转和缩放属性的值。每个游戏对象都有一个变换组件。
提示:可更改变换轴的颜色(和其他 UI 元素)(菜单:Unity > 偏好 (Preferences),并接着选择颜色和按键 (Colors & keys) 面板)。
| 属性: | 功能: |
|---|---|
| Position | 变换组件在 x、y 和 z 坐标的位置。 |
| Rotation | 变换组件围绕 x、y 和 z 轴的旋转(以度为测量单位)。 |
| Scale | 变换组件沿 x、y 和 z 轴的缩放比例。值“1”是原始大小(导入游戏对象时的大小)。 |
| Enable Constrained Proportions | 强制缩放以保持其当前比例,因此改变一个轴就会改变其他两个轴。默认禁用。 |
Unity 可测量变换组件相对于其父变换组件的位置、旋转和缩放值。如果变换组件没有父项,则 Unity 按照世界空间来测量属性。
在 2D 空间中,只能在 x 轴或 y 轴上操作变换组件。在 3D 空间中,可以在 x 轴、y 轴和 z 轴上操作变换。在 Unity 中,这些轴分别由红色、绿色和蓝色表示。
可通过三种主要方式编辑变换组件的属性:
在场景视图中,可以使用移动、旋转和缩放工具来修改变换组件。这些工具位于 Unity Editor 的左上角。
可以在场景中的任何游戏对象上使用变换工具。选择游戏对象时,工具 Gizmo 将显示在游戏对象中。辅助图标 (Gizmo) 的外观取决于选择的工具。
单击并拖动三个辅助图标轴的其中一个轴时,该轴的颜色变为黄色。拖动鼠标时,游戏对象会沿选定轴移动、旋转或缩放。松开鼠标按键时,该轴保持选中状态
在移动游戏对象时,您可以将移动锁定到特定平面(即,更改两个轴并保持第三个轴不变)。要为每个平面激活锁定,请选择移动辅助图标 (Move Gizmo) 中心周围的三个小彩色方块。颜色对应于选择方块时锁定的轴(例如,选择蓝色方块以锁定 Z 轴)。
在检视面板窗口中,可以使用变换组件编辑所选游戏对象的变换属性。有两种方法可以在组件中编辑变换属性值:
使用 Transform API,通过脚本编辑游戏对象的变换。
在 Unity 中,可以将游戏对象分组到父子层级视图中:
在层级视图窗口中,子游戏对象直接显示在父游戏对象下方,并在列表中缩进。可以选择折叠图标来隐藏或显示父游戏对象的子游戏对象。
子游戏对象的移动、旋转和缩放与其父项完全相同。子游戏对象也可以有自己的子游戏对象。一个游戏对象可以有多个子游戏对象,但只能有一个父游戏对象。
这些游戏对象之间的多级父子关系形成了变换组件的层级视图。层级视图顶层的游戏对象(即层级视图中唯一没有父项的游戏对象)称为__根__游戏对象。
将层级视图窗口中的任何游戏对象拖到另一个游戏对象上即可创建父游戏对象。这样就会在这两个游戏对象之间建立父子关系。
可以将游戏对象分组到父子层级视图中。
请注意,任何子游戏对象的变换值都是相对于父游戏对象变换值显示的结果。这些值称为__局部坐标。对于场景构建,使用子游戏对象的本地坐标通常就足够了。在游戏玩法中,这对于查找它们的__全局坐标__或它们在世界空间中的确切位置通常很有用。变换组件的脚本 API 具有局部和全局 Position、Rotation__ 和 Scale 的单独属性,还允许在局部和全局坐标之间进行转换。
提示:在父项变换时,一种有用的做法是在添加子项变换之前将父项的位置设置为 <0,0,0>。这意味着子项的局部坐标将与全局坐标相同,因此更容易确保子项变换处于正确位置。
变换组件的 Scale 决定了网格在建模应用程序中的大小与该网格在 Unity 中的大小之间的差异。Unity 中的网格大小(因此也就是变换组件的 __Scale__)非常重要,尤其是在物理模拟过程中。默认情况下,物理引擎假定世界空间中的一个单位对应于一米。如果一个游戏对象非常大,可能会出现“慢动作”问题;模拟是正确的,但您会看到非常大的游戏对象滞后很远的距离。
三个因素会影响游戏对象的 __Scale__:
请勿在变换组件中调整游戏对象的 Scale 设置。如果要以真实比例创建模型,就不必更改变换组件的 Scale。还可以调整网格导入的比例,因为某些优化是根据导入大小进行的。在单个网格的 Import settings 中执行此操作。对具有调整的 Scale 值的游戏对象进行实例化可能会降低性能。
注意:更改 Scale 会影响子项转换组件的位置。例如,将父变换组件缩放到 (0,0,0) 会使所有子变换组件相对于父变换组件定位于 (0,0,0)。
非一致缩放是指变换组件中的缩放具有不同的 x、y 和 z 值;例如 (2, 4, 2)。相反,一致缩放则具有相同 x、y 和 z 值;例如 (3, 3, 3)。非一致缩放在少数特定情况下可能很有用,但其行为与一致缩放不同:
变换组件