翻译Unity中文版的初衷是因为官方提供的中文版存在缺陷,而且翻译的不全。现在基于Unity2023.2版本对官方文档进行翻译。
Transforms 🔗
变换(Transform)存储了游戏对象(GameObject)的位置(Position)、旋转(Rotation)、**缩放(Scale)**和父子关系状态。每个游戏对象都附加有一个变换组件:无法删除变换或创建没有变换组件的游戏对象。
变换组件 🔗
变换组件确定了场景中每个游戏对象的位置、旋转和缩放。每个游戏对象都有一个变换。
提示:您可以更改变换轴的颜色(以及其他UI元素) (菜单:Unity > Preferences ,然后选择颜色和键位面板)。
属性 🔗
属性: | 功能: |
---|---|
位置 | 变换在x、y和z坐标上的位置。 |
旋转 | 围绕x轴、y轴和z轴的旋转度数。 |
缩放 | 沿x轴、y轴和z轴的缩放比例。值“1”表示原始大小(导入游戏对象时的大小)。 |
Unity根据变换的父对象来计算变换的位置、旋转和缩放值。如果变换没有父对象,则在世界空间中计算这些属性的值。
编辑变换 🔗
在2D空间中,您可以只在x轴或y轴上操作变换。在3D空间中,您可以沿着x轴、y轴和z轴操作变换。在Unity中,这些轴分别由红色、绿色和蓝色表示。
有三种主要的方法可以编辑变换的属性:
- 在场景视图中。
- 在检视器窗口中。
- 在您的C#脚本中。
场景视图 🔗
在场景视图中,您可以使用移动、旋转和缩放工具来修改变换。这些工具位于Unity编辑器的左上角。
您可以在场景中的任何游戏对象上使用变换工具。当您选择一个游戏对象时,工具Gizmo会在其内部显示。Gizmo的外观取决于您选择的工具。
当您在三个Gizmo轴之一上点击并拖动时,该轴的颜色会变成黄色。在拖动鼠标时,游戏对象沿着所选轴移动、旋转或缩放。释放鼠标按钮后,轴仍然处于选定状态。
在移动游戏对象时,您可以将移动锁定在特定平面上(即改变两个轴并保持第三个轴不变)。要为每个平面激活锁定,请选择移动Gizmo中心周围的三个小彩色方块。当您选择方块时,对应轴会被锁定(例如,选择蓝色方块可以锁定z轴)。
检视器窗口 🔗
在检视器窗口中,您可以使用变换组件来编辑所选游戏对象的变换属性。在组件中,有两种编辑变换属性值的方法:
- 手动在属性值字段中输入数值。这对于非常具体的调整很有用。
- 单击数值字段并向上或向下拖动以增加或减少数值。这对于不太具体的调整很有用。
C#脚本 🔗
使用Transform API通过脚本编辑游戏对象的变换。
游戏对象分组 🔗
在Unity中,您可以将游戏对象分组为父子层级关系:
- 父游戏对象有与其连接的其他游戏对象,这些对象具有相同的变换属性。
- 子游戏对象连接到另一个游戏对象,并从中继承变换属性。
在Hierarchy窗口中,子游戏对象直接显示在父游戏对象下方,并在列表中缩进。您可以选择折叠图标来隐藏或显示父游戏对象的子游戏对象。
子游戏对象的移动、旋转和缩放与父游戏对象完全一致。子游戏对象也可以拥有自己的子游戏对象。一个游戏对象可以有多个子游戏对象,但只能有一个父游戏对象。
这些多级的父子关系形成了变换层级。层级中位于顶部的游戏对象(即层级中唯一没有父对象的游戏对象)被称为根游戏对象。
要创建一个父游戏对象,将Hierarchy窗口中的任何游戏对象拖到另一个游戏对象上。这将在两个游戏对象之间创建一个父子关系。
编辑父子游戏对象的变换 🔗
您可以将游戏对象分组为父子层级关系。
任何子游戏对象的变换值都是相对于父游戏对象的变换值显示的。这些值被称为局部坐标。在场景构建中,通常使用子游戏对象的局部坐标就足够了。在游戏中,通常需要找到它们的全局坐标或它们在世界空间中的确切位置。变换组件的脚本API具有用于局部和全局位置、旋转和缩放的单独属性,并且可以在局部坐标和全局坐标之间进行转换。
提示:当将变换设置为父对象时,在添加子变换之前,将父对象的位置设置为<0,0,0>是很有用的。这意味着子变换的局部坐标将与全局坐标相同,这样就更容易确保子变换位于正确的位置。
变换和缩放 🔗
变换的缩放确定了您建模应用程序中的网格尺寸与Unity中的网格尺寸之间的差异。网格在Unity中的尺寸(因此变换的缩放)非常重要,特别是在物理仿真中。默认情况下,物理引擎假设世界空间中的一个单位对应于一米。如果一个游戏对象非常大,它看起来可以以“慢动作”的方式下落;这是因为您正在观察一个非常大的游戏对象下落了一个很长的距离。
以下三个因素会影响您的游戏对象的缩放:
- 您在3D建模应用程序中的网格尺寸。
- 游戏对象导入设置中的网格缩放因子设置。
- 变换组件中的缩放值。
不要在变换组件中调整游戏对象的缩放。如果您以实际尺寸创建模型,就不必更改变换的缩放。您还可以调整导入网格的缩放比例,因为一些优化是基于导入尺寸进行的。可以在每个网格的导入设置中进行设置。创建一个具有调整缩放值的游戏对象可能会降低性能。
注意:更改缩放会影响子变换的位置。例如,将父变换缩放为(0,0,0)会将所有子变换相对于父变换定位在(0,0,0)的位置。
非均匀缩放 🔗
非均匀缩放是指变换的缩放在x、y和z轴上具有不同的值;例如(2, 4, 2)。相比之下,均匀缩放在x、y和z轴上具有相同的值;例如(3, 3, 3)。非均匀缩放在一些特定情况下可能有用,但它的行为与均匀缩放不同:
- 某些组件不完全支持非均匀缩放。例如,某些组件具有由半径属性定义的圆形或球体元素,例如Sphere Collider、Capsule Collider、Light和Audio Source。这意味着圆形形状在非均匀缩放下仍然保持圆形,而不是椭圆形。
- 如果子游戏对象有一个非均匀缩放的父游戏对象,并相对于该父游戏对象进行了旋转,它可能会出现倾斜或“扭曲”的外观。有些组件在非均匀缩放时支持简单的非均匀缩放,但在这种扭曲情况下无法正确工作。例如,扭曲的Box Collider与渲染网格的形状不匹配。
- 非均匀缩放的父游戏对象的子游戏对象在旋转时不会自动更新其缩放。结果是,当您最终更新缩放时,子游戏对象的形状可能会突然改变,例如,如果子游戏对象与父游戏对象分离。
结论 🔗
搬砖愉快!