- 用户指南
- Components
- 寻路
- 动画组件
- 资源组件
- 音频组件(AudioComponent)
- 音频侦听器(AudioListener)
- 音频源(AudioSource)
- 音频过滤器(AudioFilter)(仅限专业版)
- 混响区域(ReverbZone)
- 麦克风(Microphone)
- 物理组件(PhysicsComponent)
- 箱体碰撞体(BoxCollider)
- 胶囊碰撞体(CapsuleCollider)
- 角色控制器(CharacterController)
- 角色关节(CharacterJoint)
- 可配置关节(ConfigurableJoint)
- 恒定力(ConstantForce)
- 固定关节(FixedJoint)
- 铰链关节(HingeJoint)
- 网格碰撞体(MeshCollider)
- 物理材质(PhysicsMaterial)
- 刚体(Rigidbody)
- (SphereCollider)
- 弹簧关节(SpringJoint)
- 交互布(InteractiveCloth)
- 蒙皮布(SkinnedCloth)
- 车轮碰撞体(WheelCollider)
- 游戏对象(GameObject)
- 图像效果(ImageEffectScripts)
- 高光溢出和镜头光晕(BloomandLensFlare)
- 模糊(Blur)
- 相机运动模糊(MotionBlur)
- 颜色修正曲线(ColorCorrectionCurve)
- 颜色修正(ColorCorrection)
- 颜色修正查找纹理(ColorCorrectionLookupTexture)
- 对比度增强(ContrastEnhance)
- 对比度拉伸(ContrastStretch)
- 起皱(Crease)
- 视野深度(DepthofField)3.4
- 视野深度(DepthofField)
- 边缘检测(EdgeDetection)
- 鱼眼(Fisheye)
- 全局雾(GlobalFog)
- 发光(Glow)
- 灰度(Grayscale)
- 运动模糊(MotionBlur)
- 噪波和颗粒(NoiseAndGrain)
- 噪波(Noise)
- 屏幕叠加(ScreenOverlay)
- 棕褐色调(SepiaTone)
- 边缘检测效应
- 阳光照射(SunShaft)
- 屏幕空间环境光遮蔽(SSAO)(ScreenSpaceAmbientOcclusion(SSAO))
- 倾斜位移(TiltShift)
- 色调映射(Tonemapping)
- 旋转(Twirl)
- 渐晕(Vignetting)(和色差(ChromaticAberration))
- 状态同步详细信息
- 旋涡
- 设置管理器(SettingsManager)
- 网格组件(MeshComponents)
- 网络组
- 效果
- 渲染组件
- 变换组件(TransformComponent)
- UnityGUI组
- 向导
- 地形引擎指南(TerrainEngineGuide)
- 树木创建器指南
- 动画视图指南
- GUI脚本指南
- 网络参考指南
- 移动设备上的网络连接
- 高级网络概念
- Unity中的网络元素
- RPC详细信息
- NetworkLevelLoading
- 主服务器
- 最小化网络带宽
- 社交API
- 内置着色器指南
- Unity的后台渲染
- 着色器参考
- ShaderLab语法:Shader
- ShaderLab语法:Properties
- ShaderLab语法:子着色器(SubShader)
- ShaderLab语法:Pass
- ShaderLabsyntax:Color,Material,Lighting
- ShaderLab语法:剔除和深度测试(Culling&DepthTesting)
- ShaderLab语法:纹理组合器(TextureCombiners)
- ShaderLab语法:雾(Fog)
- ShaderLab语法:Alpha测试(Alphatesting)
- ShaderLab语法:混合(Blending)
- ShaderLab语法:通道标记(PassTags)
- ShaderLab语法:名称(Name)
- ShaderLab语法:绑定通道(BindChannels)
- ShaderLab语法:使用通道(UsePass)
- ShaderLab语法:GrabPass
- ShaderLab语法:子着色器标记(SubShaderTags)
- ShaderLab语法:回退(Fallback)
- ShaderLab语法:自定义编辑器(CustomEditor)
- ShaderLab语法:其他命令
- ShaderLab语法:Pass
- 高级ShaderLab主题
- ShaderLab内置值
- 其他
- 网络视图
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Mecanim 动画系统
- 动画状态机
- 混合树 (Blend Tree)
- 在 Mecanim 中使用动画曲线 (Animation Curves)(仅限专业版 (Pro))
- 循环动画片段
- Animation State Machine Preview (solo and mute)
- 动画参数
- 旧动画系统
- 使用类人动画
- 动画层
- 资源导入与创建
- 音轨模块
- 减少文件大小
- 光照贴图 UV
- 资源准备和导入
- 如何安装或升级标准资源 (Standard Assets)?
- FBX 导出指南
- 从 Maya 中导入对象
- 从 Cinema 4D 中导入对象
- 从 3D Studio Max 中导入对象
- 从 Cheetah3D 中导入对象
- 从 Modo 中导入对象
- 从 Lightwave 中导入对象
- 从 Blender 中导入对象
- 为优化性能建模角色
- 如何使用法线贴图 (NormalMaps)?
- 如何修正已导入模型的旋转?
- 程序材质
- 如何使用水?
- 分析器(仅限专业版)
- 绘制调用批处理
- 遮挡剔除(仅限专业版)
- Unity 中的高动态范围 (High Dynamic Range) 渲染
- 在 Unity 4 中使用 DirectX 11
- 文本场景文件格式(仅限专业版)
- 使用网络播放器模版
- 平台依赖编译
- 日志文件
- 首选项
- 粒子系统曲线编辑器
- 渐变编辑器
- 怎样制作网格粒子发射器?(旧粒子系统)
- 深入了解光照贴图
- 光照贴图快速入门
- 着色器
- 动画脚本(旧版)
- 自定义
- 布局模式
- 扩展编辑器
- 网络实例化
- 材质和着色器
- 如何使用细节纹理?
- 着色器:顶点和片段程序
- Unity 中的阴影
变换
变换 Component 决定场景中每个对象的位置 (Position) 、旋转 (Rotation) 和缩放 (Scale) 。每个对象都有一个变换 (Transform) 属性。
场景视图 (Scene View) 和检视器 (Inspector)可以编辑变换组件 (Transform Component)
属性
属性: | 功能 |
---|---|
位置 (Position) | X、Y 和 Z 坐标中变换 (Transform) 的位置。 |
旋转 (Rotation) | 变换 (Transform) 围绕 X、Y 和 Z 轴的旋转,以度计。 |
缩放 (Scale) | 变换 (Transform) 沿 X、Y 和 Z 轴的缩放。“1” 是原始大小(对象被导入时的大小)。 |
变换 (Transform) 的所有属性都是参照它的父级进行测量的(请参阅以下内容了解更多详细信息)。如果变换 (Transform) 无父级,则参照世界坐标空间 (World Space) 测量属性。
使用变换
通常在 X、Y 和 Z 轴的三维空间中控制变换 (Transform)。在 Unity 中,分别用红色、绿色和蓝色代表这些轴。请记住:XYZ = RGB。
三个轴和变换 (Transform) 属性之间的颜色编码关系
可以在场景视图 (Scene View) 中或通过编辑检视器 (Inspector) 中的属性来直接控制变换 (Transform)。在场景中,您可以使用“移动”(Move)、“旋转”(Rotate) 和“缩放”(Scale) 工具来修改变换 (Transform)。上述工具位于 Unity 编辑器 (Editor) 左上角。
“视图”(View)、“平移”(Translate)、“旋转”(Rotate) 和“缩放”(Scale) 工具
这些工具可用于场景中的任何对象。单击对象时,您会看见场景中出现工具小图示。小图示的外观取决于选择哪种工具。
可以直接在场景视图 (Scene View) 中编辑三个小图示 (Gizmo)。
当您单击或拖动其中一个小图示时,您会注意到它变化颜色。拖动鼠标时,您会看见对象沿选定的轴平移、旋转和缩放。释放鼠标按钮后,轴仍然被选定。单击中间的鼠标按钮并拖动鼠标来沿选定的轴控制变换 (Transform)。
单击任何轴时就已选定该轴
围绕变换 (Transform) 小图示中心的是三个有色的方框。这些方框使您可以在单个平面内拖动变换 (Transform)(即,对象会在两个轴上移动,但在第三个轴上保持不动)。
在 XZ 平面内拖动
父子化
父子化 (Parenting) 是使用 Unity 时需要理解的最重要的概念之一。当某个游戏对象 (GameObject) 是另一个游戏对象 (GameObject) 的父级 (Parent) 时,子级 (Child) 游戏对象 (GameObject) 会像其父级 (Parent) 一样移动、旋转和缩放。正如您的手臂与躯干相连,转动躯干时,手臂因为与其相连也会移动。任何对象都可以有多个子级,但却只能有一个父级。
您可以通过将层级视图 (Hierarchy View) 的任何游戏对象 (GameObject) 拖到另一个游戏对象上来创建一个父级 (Parent)。此操作会在两个游戏对象 (GameObject) 之间创建一种父子关系。
父子层级视图 (hierarchy) 示例。名称左侧有折叠箭头的游戏对象 (GameObjects) 是父级。
上述示例中,我们认为躯干是手臂的父级而手臂是手的父级。您在 Unity 中制作的场景将包含这些变换层级 (Transform hierarchy)的集合。最上层的父级对象被称为根对象 (Root object)。当您移动、缩放或旋转某个父级对象时,其变换 (Transform) 中的所有变化都会被应用于其子级对象。
值得指出的是任何子级游戏对象 (Child GameObject) 的检视器 (Inspector) 中的变换 (Transform) 值都会相对于父级 (Parent) 的变换 (Transform) 值而显示。这些值又被称局部坐标 (Local Coordinate) 。您可以通过脚本处理访问全局坐标 (Global Coordinate) 和局部坐标 (local coordinate)。
您可以将多个单独的对象一起父子化来构建复合对象,例如,布娃娃的骨架结构。您还可以通过简单的层级实现有用的效果。例如,如果您有个夜间恐怖游戏,您就可以用手电筒创造有效气氛。要创建此对象,您要使手电筒变换 (Transform) 成为聚光灯变换 (Transform) 的父级。然后,手电筒变换 (Transform) 的任何修改都会影响聚光灯,创建一个逼真的手电筒效果。
非等比缩放的性能问题和局限性
非等比缩放是指当变换 (Transform) 中的 缩放 (Scale) 属性的 x、y 和 z 值不同时;例如 (2, 4, 2)。与此相反,等比缩放中的 x、y 和 z 值相同;例如 (3, 3, 3)。非等比缩放可能在少数选择个案中是有用的,但能避免使用它时就应避免。
非等比缩放对渲染性能有负面影响。为正确变换顶点法线,我们变换 CPU 上的网格并另外创建一份数据拷贝。通常我们可以保持网格在图形内存实例之间共享,但这样您就每个实例都需支付 CPU 和内存成本。
Unity 处理非等比缩放的方式也有一定局限性:
- 某些组件不完全支持非等比缩放。例如,对于有半径或类似属性的组件,例如球体碰撞组件 (Sphere Collider)、胶囊碰撞组件 (Capsule Collider), 灯光(Light), 音频源 (Audio Source) 等等,形状不会变成椭圆,而是仍然保持圆形/球形,不管如何进行非等比缩放。
- 有一个非等比缩放的父级且相对该父级被旋转的子级对象可能会有一个非正交矩阵,这意味着它可能出现偏斜。一些确实支持简单非等比缩放的组件仍不支持非正交矩阵。例如,箱体碰撞组件 (Box Collider)不能偏斜,所以如果它的变换 (transform) 是非正交的,则箱体碰撞组件 (Box Collider) 不会准确匹配被渲染的网格的形状。。
- 出于性能原因,有一个非等比缩放的父级的子级对象在旋转时不会自动更新其缩放/矩阵。这可能导致缩放一旦更新就会弹出,例如,如果对象与其父级分离。
缩放的重要性
(Transform) 的缩放决定建模应用程序中网格和 Unity 中网格之间的大小差异。Unity 中的网格大小(因此变换 (Transform) 的缩放)非常重要,特别是在物理模拟期间。有三个可以影响对象缩放的系数:
- 三维建模应用程序中网格的大小。
- 对象的导入设置 (Import Settings) 中的网格缩放系数 (Mesh Scale Factor) 设置。
- 变换组件 (Transform Component) 的缩放 (Scale)值。
理想情况下,您不应该调整变换组件 (Transform Component) 中对象的 缩放 (Scale) 值。最佳选项是按实际比例创建您的模型,这样您就不必改变变换 (Transform) 的缩放值。第二最佳选项是调整在单个网格的导入设置 (Import Settings 中导入网格时的缩放值。根据导入大小会进行某些优化,而实例化有一个调整过的缩放值的对象会降低性能。有关更多信息,请参阅刚体组件参考页面上的优化缩放部分。
提示
- 父子化变换 (Transform) 时,请在添加子级之前将父级的位置设置为 <0,0,0>。这会为您以后节省很多精力。
- 粒子系统 (Particle System) 不受变换 (Transform) 的 缩放 (Scale)的影响。为缩放某个粒子系统 (Particle System),您需要修改该系统的粒子发射器、动画器和渲染器的属性。
- 如果您正将 刚体 (Rigidbody) 用于物理模拟,则您可以参考在类别 - 刚体 组件参考页面上的一些有关“缩放”(Scale) 属性的重要信息。
- 您可以从偏好设置改变变换 (Transform) 轴(和其他 UI 元素)的颜色,( 菜单:Unity > 偏好设置 (Preferences) ,然后选择 颜色和按键 (Colors & keys) 面板)。.
- 如果可能,最好避免在 Unity 中进行缩放。试着在三维建模应用程序中或在网格的 导入设置 (Import Settings 中完成对象的缩放。S
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论