Version: 6000.3
语言: 中文
GameObject 类
旋转和方向

变换

切换到脚本

变换存储一个游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
的位置旋转缩放和父级状态。游戏对象始终附加了 Transform 组件:如果没有 Transform 组件,您无法删除 Transform 或创建游戏对象。

变换组件

Transform 组件确定场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.每个游戏对象都有一个 Transform。

变换组件
变换组件

提示:您可以更改变换轴(和其他 UI 元素)的颜色(菜单:Unity >首选项,然后选择颜色和键面板)。

性能

财产: 功能:
位置 变换在 x、y 和 z 坐标中的位置。
旋转 变换绕x轴、y轴和z轴的旋转,以度为单位。
规模 沿x轴、y轴和z轴的变换比例。值“1”是原始大小(导入游戏对象时的大小)。
启用约束比例(Enable Constrained Proportions) 强制刻度保持其当前比例,以便更改一个轴会更改其他两个轴。默认禁用。

Unity 会测量 Transform 相对于 Transform 父级的 PositionRotationScale 值。如果 Transform 没有父级,Unity 会测量世界空间中的属性。

编辑变换

在 2D 空间中,您只能在 x 轴或 y 轴上作变换。在 3D 空间中,您可以在 x 轴、y 轴和 z 轴上作变换。在 Unity 中,这些轴分别由红色、绿色和蓝色表示。

显示轴颜色编码的变换
显示轴颜色编码的变换

编辑变换属性的主要方法有三种:

场景视图

在 场景(Scene) 视图中,你可以使用 移动(Move)、旋转(Rotate) 和 缩放(Scale) 工具来修改变换。这些工具位于 Unity 编辑器的左上角。

手形、移动、旋转和缩放工具
手形、移动、旋转和缩放工具

可以在场景中的任何游戏对象上使用“变换”工具。选择游戏对象时,工具Gizmo与场景中的游戏对象关联的图形叠加层,并显示在场景视图中。移动工具等内置场景工具是 Gizmo,您可以使用纹理或脚本创建自定义 Gizmo。某些 Gizmo 仅在选择游戏对象时绘制,而其他 Gizmo 则由编辑器绘制,而不管选择了哪个游戏对象。更多信息
请参阅术语表
出现在其中。Gizmo 的外观取决于您选择的工具。

带有括号中键盘快捷键的变换 Gizmo。
带有括号中键盘快捷键的变换 Gizmo。

在三个 Gizmo 轴之一上单击并拖动时,该轴的颜色将变为黄色。拖动鼠标时,游戏对象会沿所选轴移动、旋转或缩放。释放鼠标按钮时,轴将保持选中状态

移动游戏对象时,可以将移动锁定到特定平面(即,更改其中两个轴并保持第三个轴不变)。要激活每个平面的锁定,请选择移动 Gizmo 中心周围的三个彩色小方块。颜色对应于选择正方形时锁定的轴(例如,选择蓝色正方形以锁定 z 轴)。

检查器窗口

检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表
窗口中,您可以使用 Transform 组件来编辑所选游戏对象的 Transform 属性。有两种方法可以编辑组件中的 Transform 属性值:

  • 手动在属性值字段中输入值。这对于非常具体的调整很有用。
  • 单击值字段并向上或向下拖动以增加或减少该值。这对于不太具体的调整很有用。

从代码

使用Transform类来修改游戏对象的位置、旋转和缩放,以及它与父和子游戏对象的层次结构关系。

有关每个成员的完整参考Transform类和用法示例,请参阅TransformAPI 参考。

对游戏对象进行分组

在 Unity 中,您可以将游戏对象分组为父子层次结构:

  • 父游戏对象具有连接到它的其他游戏对象,这些游戏对象采用其 Transform 属性。
  • 子游戏对象连接到另一个游戏对象,并采用该游戏对象的 Transform 属性。

在“层次结构”窗口中,子游戏对象直接显示在父游戏对象下方,并在列表中缩进。可以选择折叠图标来隐藏或显示父游戏对象的子游戏对象。

子游戏对象的移动、旋转和缩放与其父游戏对象完全相同。子游戏对象也可以有自己的子游戏对象。一个游戏对象可以有多个子游戏对象,但只能有一个父游戏对象。

游戏对象之间的这些多级父子关系形成了 Transform 层次结构。层次结构顶部的游戏对象(即层次结构中唯一没有父级的游戏对象)称为游戏对象。

若要创建父游戏对象,请将“层次结构”窗口中的任何游戏对象拖到另一个游戏对象上。这会在两个游戏对象之间创建父子关系。

父子层次结构的示例。名称左侧带有折叠箭头的游戏对象是父级。
父子层次结构的示例。名称左侧带有折叠箭头的游戏对象是父级。

编辑父游戏对象和子游戏对象的变换

您可以将游戏对象分组到父子层次结构中。

任何子游戏对象的 Transform 值都相对于父游戏对象的 Transform 值显示。这些值称为局部坐标。对于场景构造,通常使用子游戏对象的本地坐标就足够了。在游戏中,找到它们的全局坐标或它们在世界空间中的确切位置通常很有用。Transform 组件的脚本 API 具有局部和全局 PositionRotationScale 的单独属性,并允许您在局部和全局坐标之间进行转换。

提示: 在添加子变换之前,将父变换的位置设置为 <0,0,0> 非常有用。这意味着子变换的局部坐标将与全局坐标相同,从而更容易确保子变换处于正确的位置。

变换和缩放

变换的缩放(Scale of the Transform) 决定了meshUnity 的主要图形原语。网格体构成了 3D 世界的很大一部分。Unity 支持三角或四边形多边形网格。Nurbs、Nurms、Subdiv 曲面必须转换为多边形。更多信息
请参阅术语表
以及 Unity 中该网格的大小。网格体在 Unity 中的大小(以及变换的缩放)非常重要,尤其是在物理模拟期间。默认情况下,物理引擎模拟物理系统各个方面的系统,使物体能够正确加速并受到碰撞、重力和其他力的影响。更多信息
请参阅术语表
假设世界空间中的一个单位对应于一米。如果游戏对象非常大,它可能会以“慢动作”的形式出现;模拟是正确的,因为您正在观察一个非常大的游戏对象坠落很远的距离。

影响游戏对象缩的因素有三个:

  • 3D 建模应用程序中网格的大小。
  • 游戏对象的 Import Settings 中的 Mesh Scale Factor 设置。
  • 变换组件的 缩放(Scale) 值。

不要在 Transform 组件中调整游戏对象的 Scale。如果你以真实比例创建模型,则无需更改变换的比例。您还可以调整导入网格体的比例,因为某些优化会根据导入大小进行。在单个网格体的 导入(Import) 设置中执行此作。实例化具有调整后的 Scale 值的游戏对象可能会降低性能。

注意:更改比例会影响子变换的位置。例如,将父变换缩放到 (0,0,0) 会将所有子变换相对于父变换定位在 (0,0,0) 处。

非均匀缩放

非均匀缩放是指变换中的缩放(Scale) 对x、y和z具有不同的值;例如(2,4,2)。相反,均匀缩放的 x、y 和 z 具有相同的值;例如(3,3,3)。非均匀缩放在少数特定情况下可能很有用,但它的行为与统一缩放不同:

  • 某些组件不完全支持非均匀缩放。例如,某些组件具有由 Radius 属性定义的圆形或球形元素,例如 Sphere碰撞体(Collider) 用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格体形状完全相同 - 在游戏中,粗略的近似值通常更有效且难以区分。更多信息
    请参阅术语表
    ,胶囊碰撞器胶囊体形状的碰撞器组件,用于处理游戏对象(如桶和角色肢体)的碰撞。更多信息
    请参阅术语表
    、Light 和音频源(Audio Source) 将场景中的音频剪辑播放到音频监听器或通过混音器播放的组件。更多信息
    请参阅术语表
    .这意味着圆形在非均匀缩放下保持圆形而不是椭圆形。
  • 如果子游戏对象具有不均匀缩放的父游戏对象,并且相对于该父游戏对象旋转,则它可能会显示为倾斜或“剪切”。有些组件支持简单的非均匀缩放,但在像这样倾斜时无法正常工作。例如,倾斜的Box Collider:立方体形状的碰撞器组件,用于处理骰子和冰块等游戏对象的碰撞。更多信息
    请参阅术语表
    与渲染网格的形状不准确匹配。
  • 非均匀缩放父游戏对象的子游戏对象在旋转时不会自动更新其缩放。因此,当您最终更新缩放时,子游戏对象的形状可能会突然更改,例如,如果子游戏对象与父游戏对象分离。

其他资源

变换

GameObject 类
旋转和方向