Chapter12 粒子系统
12.1 什么是粒子系统
- 粒子是小的、简单的图像或网格
- 粒子系统可以显示和移动大量粒子
- 系统动力学
每个粒子都有预定的寿命,可在球,半球,锥,立方体或任意网格形状的空间内随机发射粒子,显示粒子直到其寿命结束,此时从系统中被排放。 - 粒子动力学
发射和寿命会影响系统的整体行为,每个粒子的颜色,大小,旋转方式都可以随时间和运动变化,通常在Scene中生成大量2D图像来模拟流体实体
12.2 在unity中使用粒子系统
方法一: 直接创建粒子对象
GameObject -> Effects -> Particle System
方法二: 在GameObject中添加粒子系统组件
Component -> Effects -> Particle System
动画绑定: 动画系统可以访问所有粒子系统属性,即是说,可以将它们设为关键帧,并在动画中控制它们。
12.4 参数详解
-
Main 主模块
固有module,定义粒子初始化时的持续时间,大小,发射速度,循环方式等。 -
Emission 发射模块
控制粒子的放射速度,可以实现在某个特定时间内生成大量粒子的效果,有利于模拟爆炸等情况 -
Shape 形状模块
定义粒子从中发射的形状(体积or表面积),以及起始速度方向
参数:- Shape
粒子发射器的形状,shape不同,Particle的初始速度方向不同,Sphere,Hemisphere有相同参数属性 - Cone 锥形发射器
- Donut 圆环发射器
- Box 方块发射器
- Circle 圆圈发射器
- Edge 边沿发射器
- Shape
-
Velocity over Lifetime
- 控制生命周期内每个粒子的速度
- 对行为复杂的粒子效果明显
- 对简单视觉行为的粒子(如烟雾)以及与物理世界几乎没有互动的粒子作用不明显
参数:
- x, y, z => x, y, z轴向的速度
- Space => 所选 x, y, z 轴是local还是world
- Speed Modifier => 沿例子当前行进方向对粒子的速度应用乘数
-
Limited Velocity over Lifetime
控制生命周期内的限制速度以及衰减速度,可以模拟类似拖拽的效果
参数:- Dampen 超过限制$v$时,粒子$v$降低的部分
- Drag 应用线性牵引于粒子速度
- Multiply by Size 启用时,粒子大小越大,受阻力系统越大
- Multiply by Velocity 启用时,粒子速度越大,受阻力系数越大
-
inherit Velocity
控制粒子随时间推移,速度对于父对象运动的反应
Mode:- Current 发射器当前速度应用于每一帧上所有粒子,发射器$v$越小,所有粒子$v$越小
- Initial 每个粒子诞生时,会被发射器施加一次速度,粒子诞生后,发射器速度任何变化都不会影响粒子
- Multiplier 粒子按照指定比例继承发射器速度
-
Force over Lifetime
控制粒子加速度
参数:- x, y, z => x, y, z轴向的速度
- Space => 所选 x, y, z 轴是local还是world
- Randomize => 使用Tow Constant或者Tow Curves模式时,随机化会产生更不稳定的运动
-
Color over Lifetime
设置粒子在生命周期内的颜色和透明度的变化
参数:- Color => 粒子在其整个生命周期中的颜色梯度(起->止)
-
Color by Speed
参数:- Color 在速度范围内定义的粒子的颜色梯度
- Speed Range 颜色渐变映射到速度范围的min&max
-
Size over Lifetime
参数:- Separate Axes 是否在每个轴上独立控制粒子大小
- Size 定义每个粒子的大小在其生命周期变化的曲线
-
Size by Speed
参数- Separate Axes
- Size
- Speed Range
-
Rotation over Lifetime
参数- Separate Axes
- Angular Velocity 旋转速度(每秒)
-
Rotation by Speed
参数- Separate Axes
- Angular Velocity
- Speed Range
-
External Force 外部力量模块
用于设置风区对粒子的影响 -
Noise
用于给粒子系统添加湍流效果- 高频噪声可以用来模拟火焰余烬
- 低频噪声可以模拟烟雾效应
参数
- Separate Axis
- Strength
- Frequency
- Scroll Speed
- Damping
- Octaves 振幅
- Octave Multiplier
- Octave Scale
- Quality
- Remap
- Remap Curve 描述最终噪声如何转换
- Position Amount
- Rotation Amount
- Size Amount
-
Collision
控制粒子与游戏对象的碰撞
参数:- planes 一个可以扩展的Transform对象,定义碰撞的平面
- Visualization 可视化=>碰撞平面显示是框线风格还是固体平面
- Scale Plane 设置可视化平面大小
- Dampen 碰撞后的粒子速度损失
- Bounce 碰撞反弹后的粒子速度
- Lifetime Loss 碰撞后的粒子生命周期的损失
- Min Kill Speed 粒子在小于该速度时,碰撞后销毁
- Max Kill Speed ……大于……
- Radius Scale 粒子碰撞半径的大小
- Send Collision Messages 激活后,粒子发射碰撞时调用
- Visualize Bounds 是否显示每个粒子碰撞边界的线框形状
world选项 P206
-
Triggers
控制粒子系统在场景中的一个或者多个触发器。发生触发时调用回调函数- Colliders 与粒子相撞的碰撞器列表
- Inside 粒子在触发器内(Ignore/Kill/Callback)
- Outside 粒子在触发器外
- Radius Size 设置粒子碰撞体的大小
- Visualize Bounds 是否显示每个粒子碰撞边界的线框形状
-
Sub Emitters 子发射器
- Birth 粒子产生时发生的子粒子
- Collision 粒子碰撞时发射的子粒子
- Death 粒子死亡时发射的子粒子
-
Texture Sheet Animation 纹理动画模块
可以把纹理作为一个独立的子图像网格,用于播放帧动画 -
Lights 灯光模块
给粒子添加实时灯光 -
Trail 拖尾模块
给粒子运动路径添加拖尾效果 -
Custom Data 自定义数据
给粒子附加自定义数据格式 -
Render 渲染模块
用于设置粒子系统渲染相关属性
Chapter13 动画系统
13.1概述
特点:
- 支持向 unity 中导入动画,或者直接在 unity 中创建动画
- 一个游戏动画可以应用子不同的⻆色模型
- 简化了流程,方便剪辑,转换和交互
- 可视化编辑工具
- 支持动画分层遮罩
- 不同身体部位使用不同逻辑
动画系统工作流:
- Unity 动画系统基于动画剪辑
- 动画片段可以来自于 3ds Max,Maya 等第三方工具
- 可以将动画片段组织成【动画制作器】+【控制器】的系统 类似于结构化流程图
- 动画控制器:
用作“状态机“ 可跟踪当前播放的动画剪辑,以及动画剪辑改变或混合时的状态信息
Unity 动画系统人形⻆色处理:
- 支持运动捕捉,资源存储 或 第三方动画库
- 人形字符可以被映射到通用的内部模式
Unity 动画工作流主要阶段:
-
资源的准备和导入
由【美术】或【动画师】通过第三方工具完成 -
⻆色的建立
- 人形⻆色建立:
Mecanim 通过扩展的图形操作界面和动画重定向功能,为人形模型提 供特殊的工作流,包括 Avatar 的创建和对肌肉定义的调节等 - 一般⻆色建立:
为处理任意的运动物体和四足动物设定的,动画重定向功能对此不适用
- 人形⻆色建立:
-
⻆色的运动 包括创建动画片段及其相互间的交互作用,包括建立状态机和混合树,调整动画参数,以及通过代码控制动画等
13.2 Unity 动画相关组件
13.2.1 Animator 和 Animator Controller
- Animator 动画组件
Animator 视窗与 Scene 视窗同级,并排显示
作用: 用于将动画分配给场景中的 GameObject。需要引用动画控制器来使用。
引入动画控制器的原因: 定义要使用哪些动画片段,并控制 when & how to 在其间进行混合或转换。如果 GameObject 是具有 Avatar 定义的人形⻆色,则组件中也应该分配 Avatar 动画组件,动画曲线信息参数⻅ P214 - Animator Controller 动画控制器
作用 : 允许用户为⻆色或其他动画游戏对象安排和维护一组动画。对其中使用的动画片段进行了引用, 并使用状态机管理各种动画状态和它们之间的转换,要使用动画剪辑时,需要用一个动画控制器来整合资源,所以即使只有一个动画剪辑,仍然需要将其放在动画控制器中。
状态机 : 可以认为是一种流程图,或者是简单的 Unity 程序内的视觉编程语言
创建方式 : Create -> Animator Controller。以上操作会创建一个 .controller 格式的资源
动画控制器的窗口内容 : Layer 动画层组件; Parameters 事件参数组件;状态机自身的可视化窗口 - Layer 动画层组件
作用 : 可以管理身体不同部位的复杂状态机。如,使用下半身层来管理 走动 / 跑动,上半身层来管理 投掷 / 射击
使用方式 : 可以从动画控制器左上⻆的图层小部件(Layers)中管理动画图层,单击图层菜单右侧的小⻮轮,可以显示该图层的设置
图层功能及如何使用 : 在每个图层上,用户都可以指定遮罩和混合类型。Override 意味着来自其他图层的信息将被忽略。Additive 意味着动画将被添加到之前的图层上。点击 Animator – Layers 视窗中的 + 按钮 可以添加新图层。 - Parameters 参数组件
在 Animator Controller 中定义的变量,可以从脚本中访问并分配值,脚本可以控制或影响状态机的流程
默认参数可以在 Animator 窗口左下⻆的 Parameters 工具栏中设置
参数类型 : Float,Int, Bool, Trigger - 动画状态机
一个⻆色拥有多个可以在游戏的不同状态下调用的不同动作是普遍的现象,使用脚本来控制这些动作是潜在的复杂工作。Mecanim 借用了状态机的概念来简单地控制和序列化⻆色动画
状态机 : 基本观点是,一个⻆色应该在任何给定的时刻,执行某些特定的动作。一般情况下,⻆色在进入下一个状态时应该有所限制,而不是跳到任意状态,将这些情况整合起来的东⻄就是状态机。状态和状态转移可以使用图形界面描述,在这个界面里,节点用来描述状态,而带箭头的线段表示状态转移
Mecanim状态机:提供了一种可以预览某个独立⻆色的所有动画剪辑集合的方式
状态机包括: 状态,状态转移,事件。大状态机中可以再设置小的子状态机-
动画状态
动画状态机中内建的基本模块
每个状态包含一个在该状态下⻆色能播放的独立动画序列。出发状态转移事件时,⻆色将会转移至动画序列指定的下一个状态。在复杂状态机中,预览独立的状态机中的某些部分可以提升效率。
特殊功能: 用户可以使用静音和独奏功能(Mute,Solo)。静音:转换将被禁用;独奏:相对于源自相同状态的其他转换会被弃用。在过渡检查器或状态检查器(更推荐)中设置 Mute 和 Solo,在视图中,设置为 Solo的状态转换为绿色箭头,Mute为红色箭头。当一个 Solo 被勾选,则该状态的其余转换将被 Mute,如果 Solo 和 Mute 都被勾选,则 Mute 优先级更高。
创建新状态: 在动画控制器窗口的空白区域单击鼠标右键,选择 Create State -> Empty 来创建一个新的状态。向动作控制窗口拖拽一个新的动画,以此创建一个包含该动画的动画状态(用户只能拖拽 Mecanim 系统动画)。
一些技巧: 状态机首次被激活时,会自动跳转至橘⻩色的默认状态,用户可以根据需求自行更改默认状态。
修改默认状态: 右键某个状态,在弹出菜单中选择 Set As Default State。
快捷键: Alt + 鼠标左键拖动,可以移动状态机视图,滚动鼠标滚轮,可以缩放状态机视图。
注意,动画状态也可以包含一个动画混合树,参数⻅ P218 -
Any State 任意状态
一个一直存在的特殊状态
作用: 为了保证在任意状态下可以转移至某个当前正处于的特殊状态而准备的
特点: 不能作为一个状态转移的重点 -
Entry 和 Exit 节点
动画窗口的每个视窗都有一个 Entry 和 Exit 节点
作用:- Entry: 在转换到当前状态机时使用, 可以根据预条件,设置倒不同的分支状态
- Exit: 用于指示状态机应该退出
-
Animator Transition 动画过渡
是状态机直接的连线
作用: 帮助用户简化大型货复杂状态机, 允许用户在状态机逻辑上有更高的抽象级别
如何添加/删除: 选中某个过渡的状态机,点击Make Transition -> 创建动画过渡方式。选中某条过渡线,按键盘 Delete键 -> 删除动画的过渡方式。
当用户从一个动画状态跳转到另一个动画状态时,发生动画过渡。选中动画过渡线即可看到过渡动画的设置。
参数:- Has Exit Time: 动画过渡是否有固定的退出时间
- Exist Time: 动画过渡时,本状态退出的时间
- Fixed Duration: 若勾选 Has Exit Time,以秒为单位进行转换, 为勾选 … , 转换时间将被理解为源状态的归一化时间的一小部分
- Transition Duration: 当前状态持续时间,或转换的持续时间, 在转换图中,可视化为两个蓝色标记之间的部分(P220 13-16)
- Transition Offset: 在转换到的目标状态中,开始播放的时间偏移量, 例如 0.5 表示目标状态通过其时间线以原先50%的速度开始播放
- Interruption Source: 使用它来控制这种转换可能被中断的情况
- Ordered Interrupution: 确定当前转换是否可以独立于其顺序中的其他转换
- Conditions: 设置何时触发该动画过渡
转换条件和时间作用: 转换可以 0 到 多个 转换条件,为 0 时,Unity 只考虑退出时间,如果用户的转换至少有一个条件,则在触发转换钱必须满足条件。
触发条件包括: Conditions 触发条件。一个条件参数: 可以用 Exit Time 为参数并声明一个表示为源状态标准的时间参数。如,0.95表示该状态转移会在原动画播放至(95%时触发);一个条件谓词: 如果需要,使用浮点数作为参数时,可以使用小于 / 大于 的数;一个条件值: 如果需要,使用整数作为参数时,判断是否等于一个固定值。
注意: 如果转换启用了 Has Exit Time 并且至少有一个条件, 则仅在状态退出时间后才会检查这些条件。
-
13.2.2 Animation 动画编辑器
Animation 窗口是 Unity 提供的,用来编辑物体动画的系统
-
动画编辑
打开编辑窗口: 选中游戏对象,点击 Window -> Animtion 打开动画编辑窗口
创建一个动画组件 :若选中的游戏对象没有动画,则在 Animation编辑窗口右侧有 Create 按钮,点击 Create 即可弹出创建动画窗口。设置完毕后,点击创建动画窗口的 Save 按钮即可保存一个动画文件,该动画文件保存到 Project 视图中,此时 Unity 还会创建一个与所选 GameObject 同名的 Animator Controller,将一个 Animator 组件添加到 GameObject中,并适当地连接资源。
动画窗口属性: ⻅ P 221 13-18- 开启 / 关闭 动画录制
- 播放 / 暂停 动画效果
- 动画采样帧数 samples
- 添加动画属性 add property
- 动画关键帧 key ⻅ P 222 13-19
- key 关键帧; event 动画事件
- 添加 key 左侧视窗棱形按钮,右侧网格处 单击鼠标右键 -> 添加key
- 添加 event 左侧视窗竖条形按钮,右侧网格上方空白处 单击鼠标右键
-
动画设置
打开动画文件: 在 Projects 面板中,找到已经录制好的动画片段, Assets中图标为播放键的文件,随后在属性面板里设置动画片段属性,并预览动画效果
参数:- Loop Time 是否循环
- Loop Pose 勾选后动画进行无缝循环
- Cycle Offset 需要在不同的时间启用动画,则设置循环动画的周期偏移
预览: 位于动画片段的属性面板右下⻆,即属性面板中参数下方的可视化窗口处
- Loop Time 是否循环
13.3 外部动画资源的准备和导入
13.3.1 获取人形网格模型
- 人形网格模型
为充分利用 Mecanim 的人形动画系统,以及动画重定向功能,需要一个觉有 ⻣骼绑定 和 蒙皮 的 人形网格模型
创建一个人形网络模型的步骤:- 一般由一组多边形或三⻆形网格组成 创建模型的过程被称为建模(modeling)
- 为控制⻆色运动,必须创建一个⻣骼关节层级(joint hierarchy), 该层级定义了网格内部的 ⻣骼结构 及其 相互运动关系,这个过程被称为⻣骼绑定(rigging)。
- 人形网络模型必须与关节层级关联起来,即通过指定关节的动画来控制 特定网格的运动,这个过程被称为蒙皮(skinning)。
- 如何获取模型
在 Mecanim 系统中,有三种途径获取人形网格模型- 使用一个过程式的 人物建模 软件,如 Poser,Makehuman,或者 Mixamo。其中 Mixamo 可以同时进行 ⻣骼绑定 和 蒙皮操作。(Tip:在软件中应该尽量减少人形网格的面片数量->性能)
- 在 Unity Asset Store 上购买适当的模型资源
- 通过其他建模软件来创建全新的人形模型, 包括 3ds Max, Maya, Blender 等
- 导出和验证模型
Unity 引擎可以导入一系列常用的 3D 文件格式,推荐使用 FBX 2012
FBX 2012 的特点: 导出的网格中可以包含 关节层级,法线,纹理,以及 动画信息(不包括蒙皮),可以将网格模型重新导入建模软件,从而验证其正确性。可以直接导出不包含网格的动画信息
13.3.2 导入动画
可以导入的动画类型: 原生的 Maya 的 .mb or .ma 文件, 3ds Max 的 .max 文件, Cinema 4D 的 .c4d 文件
如何导入动画资源: 只需要将模型直接拖入 Project 视窗中的 Assetes 目录即可。选中动画资源文件,可在 Inspector 视图的 Import Setting 中编辑导入设置。
13.3.3 动画分解
为什么要进行动画分解: 根据不同的需求,可以将不同动作分别导入为若干个独立的动画片段, 也可以被导入为按固定顺序播放各个基本动作的单一动画片段。对于后者,必须Unity内部将其分解为1若干个子片段。
如何进行动画分解:
-
使用预分解的动画模型
特点: 含有预分解动画片段的模型,是 最容易使用 的
使用方式: 导入含有预分解动画片段的模型时,动画导入面板会有所不同(⻅ P224 图 13-23)。面板中含有一个可动的动画片段列表,可单击底部 Play 按钮 预览,可根据需要,对每个片段的帧数范围进行编辑调整。 -
使用未分解的动画模型
如何使用:导入仅提供单一连续动画片段的模型时,导入面板与预分解动画不同(⻅ P224 图 13-24), 此种情况下,可以自行设定每个动画序列的帧数范围, 通过单击动画导入面板 Animation标签⻚中下部的 + 按钮,选中新增的动画,进而指定包含的帧数范围,设置完毕后点击 Apply 应用即可添加一个新的动画片。 -
为模型添加动画
为模型添加动画有几种情况: 两种,即非 Mecanim 和 Mecanim模型
非 Mecanim模型 如何添加动画:- 用户可以为任意模型的动画组件添加动画片段,该模型甚至可以没有肌肉定义(非 Mecanim 模型),进而在 Animations 属性中指定一个缺省动画片段,和所有可用的动画片段
- 在 非 Mecanim 模型 上加入动画片段,就必须采用非 Mecanim 的方式即,将 Muscle Defination 属性设置为 None
有肌肉定义的 Mecanim 模型 如何添加动画?
- 选中具有肌肉定义的 Mecanim 模型
- 创建一个新的 Animator Controller
- 打开 Animator Controller 窗口
- 将特定的动画片段拖入 Animator Controller 窗口
- 将模型资源拖入 Hierarchy 视图
13.3.4 循环播放动画片段
为什么要循环播放动画:确保动画可以很好的循环播放,是动画制作中最基本的操作之一
如何实现: Mecanim 系统为循环播放动画片段提供了一套方便的工具,动画片段可以基于姿态,旋转,位置进行循环
使用技巧: 在动画片段的 Inspector 视图中,可以拖动动画片段的 Start 和 End 点, 拖动时可以看到一系列的循环适配曲线, 如果曲线右侧的原点显示为绿色,则可以很好的循环播放,否则为红色。
13.4 人形⻆色动画
13.4.1 创建 Avatar
模型的⻣骼类型:Humanoid,Generic,Legacy
指定模型的骨骼种类: 将模型导入 Assets 后,在 Project Assets 视图中选择模型,在右侧的Inspector 面板的 Rig 选项卡中的Animation Type属性中,通过下拉菜单选择并指定它的⻣骼类型,选择后点击 Apply 即 可将其作用到模型上
- 人形动画 Humanoid
Humanoid 添加过程: 根据上述方法指定模型的⻣骼类型为 Humaniod 后,Mecanim 系统就会尝试将用户所提供的 ⻣骼结构与 Mecanim 系统内嵌的⻣架结构进行匹配。匹配过程通常 Mecanim系统分析⻣架的关联性并 自动完成 ,若匹配成功,在 Configure 按钮 左侧会出现一个对勾。匹配成功时 ,Project 视图中的 Assets 资源文件夹中,一个 Avatar 子资源文件将被添加到模型资源中,选择这个 Avatar 以配置子资源。此处的成功匹配, 仅指代成功匹配了所有必要的关键⻣骼 ,要达到更好的效果,需要使一些非关键⻣骼也匹配成功,并使模型处于正确的姿态 (T-pose) 还需要 对 Avatar 进行手动调整。匹配失败时,Configure 左侧的对勾会变为叉号,并在 Inspecter Rig 选项卡中提示 Error; 此时需要对 Avatar 进行手动设置。 - 非人形动画
非人形动画都有哪些:一般动画类型 (Generic) 和 旧版传统动画类型 (Legacy)
13.4.2 配置 Avatar
为模型资源正确设置 Avatar 极为重要,Avatar 也是 Mecanim System 中极为重要的模块
无论 Avatar 自动创建是否成功,都需要进入 Configure Avatar 界面确认其有效性
确定有效性: 确认⻣骼结构与 Mecanim 与定义的⻣骼结构是否正确匹配,确认模型是否已经处于 T-pose
在单击 Configure 按钮时,编辑器会要求保存当前场景。因为在 Configure 模式下,Scene 视图会被占用,即用来显示当前模型的 ⻣骼,肌肉,动画信息,而不是场景信息。
保存场景后,会进入 Avatar 配置面板买中包含了一个反应关键⻣骼信息的视图,如P227 13-31
Avatar 配置面板视图作用: 显示那些⻣骼是必须匹配的(在视图中以实线圆圈表示)。可选匹配⻣骼的运动会根据必须匹配⻣骼的状态来进行自动插值计算。为了方便⻣骼匹配,用户提供的⻣架中应该包含所有必须匹配的⻣骼。
⻣骼命名规范:为了提高匹配效率,应尽量通过⻣骼代表的部位为其命名
无法自动匹配时手动配置:
- 单击面板下方的 Pose Sample Bind-Pose 来获得模型原始姿态
- 单击 Pose 按钮左侧的 Mapping Automap,基于原始姿态创建⻣骼映射
- 单击Pose EnforceT-pose强制模型接近T姿态
- 上述过程中如果 1,2 两步中出现映射失败,用户可以通过 Scene 视图 或者 Hierarchy 视图中拖出的⻣骼来指定⻣骼
- 如果⻣骼最终指定正确,但⻆色模型没有处于正确位置,用户会看到 Character not in T-pose 提示,此时可以通过再次 Enforce T-pose 按钮或者直接旋转⻣骼的方式将其调整到 T 姿态
- 上述⻣骼信息可以保存成一个 .ht 类型的人形模板文件,方便复用
13.4.3 设置 Muscle 参数
作用是限制⻣骼运动范围
优点:可以在 Avatar 面板的 Muscle&Setting 选项卡中调节相关参数,面板中可以非常容易地调整⻆色的运动范围,确保⻣骼运动看起来真实自然。
作用范围:可以根据需求,设置变形方法对几根⻣骼同时进行调整。可以对每根⻣骼进行单独调整。
13.3.4 Avatar Body Mask 身体遮罩
作用:通过 Mask 来控制身体的某一部分是否受动画影响
开启Mask设置:在 Project 视窗中点击一个 FBX 文件,在其 Inspector 视窗中可以找到 Mask
作用范围:Mask 可以控制身体的部分包括:头部,左右臂,左右手,左右腿,根结点,根结点以脚下的 shadow 表示
Mask功能:为手和脚切换 IK 状态,从而决定在动画混合过程中是否引入 IK 曲线,单击 Avatar 一部分来开启或关闭对应部分的 IK 功能双击空白区域来 开启或关闭所有部分的 IK 功能
如何为 Animator 或资源设置 Mask: 在 Mesh Import Inspector (在 Project 视图中点击 FBX 格式文件,其 Inspector 视图即为 Mesh Import Inspector)的 Animation 选项卡, 以及 Animation Layers (Animator -> open -> Animation Layers)面板中找到 Mask 控制选项
如何分别为 Animation 中不同片段设置 Mask:在 Mesh Import Inspector -> Animation 选项卡 -> Clips 模块中,含有所有游戏对象的动画片段。
如何创建 Mask 资源:通过 导航菜单栏 Assets -> Create -> Avatar Mask 来创建 Mask 资源。该资源以 .mask 格式的文件保存。
Mask 优点:
- 当指定 Animation Layers 时,这些 Mask 资源可以在 Animator Controllers 中被复用
- 使用 Mask 可以减少内存开销(遮罩部分不需要计算动画曲线) 同时动画回放时也不需要重新计算无用的动画曲线,进而减少 CPU 开销cc
13.4.5 人形动画的重定向
为什么要进行人物动画重定向: 人形动画重定向是 Mecanim 系统中最强大的功能之一,可以通过简单的操作,将一组动画应用到多种人形⻆色模型上
只能应用于人形模型,因此必须正确配置 Avatar
推荐配置, 推荐使用如下的层次结构:
- 导入的⻆色模型,其中含有一个Avatar
- Animator 组件,其中引用了一个 Animator Controller 资源 3. 一组被 Animator Controller 引用的动画片段
- 用于⻆色动画的脚本
- ⻆色相关组件,如 Character Controller 等
13.4.6 逆向运动学功能 IK
⻆色动画实现方式:大多数⻆色动画都是通过将⻣骼的关节⻆度旋转到预定值来实现的,子关节的位置由副节点的旋转⻆度决定。这种决定⻣骼位置的方法称为前向运动学
逆向运动学: 给定末端节点位置,从而逆推出节点链上所有其他节点的合理位置
在 Mecanim 系统中, 任何正确设置了 Avatar 的人形⻆色 都支持 IK 功能
为了设置⻆色模型的 IK,需要知道可能与之进行交互的周边物体,进而编写Ik脚本,常用的 Animator 函数包括:
- SetIKPositionWeight
- SetIKRotationWeight
- SetIKPosition
- SetIKRotation
- SetLookAtPosition
- bodyPosition
- bodyRotation
P231逆向运动学
13.5 动画混合
13.5.1 混合树
什么是动画混合?与动画过渡有什么区别:二者都可以生成平滑的动画。动画混合是通过插值技术实现对多个动画片段通以不同的程度平滑地混合动画过渡是在一定时间内从一个动画状态向另一个动画状态的平滑过渡
动画混合特点:每个动作对于最终结果的贡献量取决于 混合参数。动画混合树可以作为状态机中的一种 特殊的动画状态存在。
有意义的动画混合的条件: 混合的动作必须具有相似的性质和时间。
如何制作混合树?:
- 在 Animator Controller 中右键单击空白区域
- 在弹出的菜单中一次选择 Create State From New Blend Tree
- 双击视窗中新建的混合树,进入混合动画编辑界面
- 当前⻚面会显示整个混合树的图形(可通过右键单击混合树,添加子动作和子混合树,添加后单击混合树或子混合树,在对应的Inspector视窗中可以为空白动作添加Animation),如 P234 13-48,而属性面板显示当前选定的节点及其直接子节点。
有什么不同的混合方式?:1D混合,2D混合,直接混合
13.5.2 1D混合
在混合树的 Inspector 视图中,Blend Type 属性可以选择不同的混合方式
1D混合就是通过唯一的一个参数来控制子动画的混合,即Animation Parameter。
Animation Parameter 的取值范围:[-1.0, 1.0] 向左倾斜 ~ 向右倾斜
混合树添加动画片段:在 Animator Controller 主视图中右键单击某个混合树,选择 Add Motion。点击混合树对应的 Inspector 视图的 Motion 模块下方的 + 号。
混合树的 Parameter 如何修改:单击混合树对应的 Inspector 视图中 Parameter子视图中的蓝色金字塔,将其向左或向右拖动可 以改变动作的 Threshold(阈值)。如果未启用 Inspector 视窗下方的 Automate Threshold 切换,可以通过在 Threshold 列中的数 字来编辑 Motion 列表中的 Threshold。
Parameter 视图表示什么:表示了混合参数变化时,每个子动画的影响,其中每个子动画都用一个蓝色金字塔表示,第一个和最后一个动画只显示一半的金字塔。使用鼠标左键单击某个金字塔形状并按住不放时,相应的动画片段会在Parameter子视图下方的 Motion列表中高亮显示。每个金字塔的顶端代表该动画片段的混合权重为1,而其他所有动画的混合权重都为0。视图中红色的竖线表示当前的混合参数。
预览: 在单击 Inspector 底部的 Play 按钮后,拖动红线向左或向右移动,可以观察到混合参数对于最终动画混合效果的影响。
13.5.3 2D混合
通过两个参数来控制子动画的混合
2D混合的模式:
- 2D Simple Directional (2D简单定向模式) 该模式适用于所有动画都具有一定的运动方向,或者其中 任何两个子动画的运动方向都不相同的情况(如向前向后向左等)
- 2D Freeform Direction (2D自由定向模式)同样适用于具有一定运动方向的情况,且 同一方向上可以存在多个 动画
- 2D Freeform Cartesian (2D自由笛卡尔模式)适用于动画不具有确定运动方向的情况
设置 2D 混合的动画混合树: 设置混合类型为2D后,需要选择通过哪两个 Animation Parameters 来控制混合树(如 velocity X & velocity Z,即平移速度和前进速度)。可以通过拖动 混合树 Inspector视图中的 Parameter子视图中的蓝点来改变动作的位置 还可以在 Motion列表中编辑 Pos X 以及 Pos Y 来设置动画的位置。
Inspector 中 Compute Position 的作用: 根据用户从动画剪辑中的根部动作获取到的数据来设置位置,可供选择的数据是速度或⻆速度。参数列表⻅ P237 表13-7,表13-8
修改Parameter:在混合树的 Inpsector Parameter 视窗中,选中某个蓝色菱形后,其影响范围将通过蓝色的 可视化场来表示。蓝色菱形外的蓝色圆圈越大,说明该动画当前所占的权重就越大
预览:单击混合树 Inspector面板底部的Play后,拖动红点就可以观察到两个混合参数对于混合结果的影响,拖动红点逐渐靠近某个蓝色菱形时,其外侧的圆的直径会相应变大,其他的会变小
13.5.4 直接混合
什么是直接混合:将动画参数直接映射到子混合树的权重,可以帮助用户更精确的控制混合动画,而不是间接使用一个或两个参数
特点:用户可以将动作添加到动画列表中,然后应该为每个动作分配相应的参数,以直接控制树中的混合权重。实际上直接模式只是绕过了交叉简便,或者各种2D混合算法等,允许用户实现用代码控制混合动画的混合,可以让用户直接控制每个节点的权重,适用于脸部表情的动画混合,或者可以叠加的动画混合。
Chapter14 Timeline
作用:创建电影内容,游戏序列,音频序列以及复杂的例子效果
特点:使用Unity的Timeline创建的每个剪辑场景,电影,或者游戏播放序列都会包含Timeline资源和Timeline实例
14.1 Timeline概述
使用过程中Timeline编辑器窗口会保存 Timeline Asset和Timeline instance
优点:可以在场景中直观地排列连接到 GameObject 的 Track (轨道)和剪辑中
- Timeline Assets
储存 Track, 剪辑,以及录制的动画,而不会链接到具体游戏对象上存在的动画,Timeline Assets 保存在 Project 中
制作方式: 如果在创建电影,剪切场景或游戏播放序列时,录制关键动画,则 Timeline 编辑器窗口会将录制的动画保存为Timeline Asset 的子项。 - Timeline instance
尽管 Timeline Asset 定义了剪切场景,电影或游戏播放序列的轨道和剪辑,但无法将 Timeline Assets 直接添加到场景中。要使用 Timeline Asset 为场景中的 GameObject 创建动画,必须要创建 一个 Timeline instance
在 Timeline 编辑器窗口中,提供了在创建 Timeline Assets 时自动创建 Timeline instance 的方 法
在场景中选择一个具有与 Timeline Assets 关联的 Playable Director 组件的游戏对象,则 Bindings 将会显示在 Timeline 编辑窗口和 Playable Director 组件中 - 重用TimelineAssets
由于 Timeline Assets 和Timeline实例是分开的,因此可以在多个 Timeline 实力中重复使用同一 个 Timeline Asset
Timeline 窗口和动画窗口的区别:- Timeline 窗口:
可以在同一个序列中,只做许多不同的游戏对象或动画,可以有多种类型的轨道,切每个轨道可以包含多个可移动剪切混合的剪辑,有利于创建更复杂的动画序列,需要将多个不同的游戏对象在一起进行编排功能更新,取代了依稀动画窗口的功能 - 动画窗口:
可以创建单个动画片段,以及查看导入的动画片段动画片段用于存储单个游戏对象,或单个游戏对象层次结构的动画。有利于制作离散的游戏动画(旋转硬币,推⻔,摆手等),可以更简单地创建动画片段,并未单个游戏对象创建动画,可以在动画窗口中创建片段,并使用Animator控制器进行组合和混合
- Timeline 窗口:
14.2 Timeline 工作流程
14.2.1 创建 Timeline Assets 和 Timeline instance
如何使用 Timeline Assets?:使用 Playable Director 组件将 Timeline 资源关联到游戏对象上。将 Timeline Assets 与 Playable Director 关联时,会创建一个 Timeline instance,并允许用户指定 Timeline Assets 为场景中的哪些对象设置动画。( 游戏对象还必须有一个 Animator 组件 )
创建新的 Timeline Assets 和 Timeline instance:
- 在场景中,选择用作电影,或其他基于游戏的序列焦点的 GameObject
- 打开 Timeline 编辑器窗口(Window -> Timeline),如果对象还没有附加到 Timeline 资源的 Playable Director 组件上,则 Timeline 编辑器窗口中的消息会提示用户创建。
- 单击 Create 按钮创建 Timeline 资源,对话框回提示用户正在创建的 TImeline Assets 的 名称 和位置
- 单击保存
14.2.2 使用无线剪辑录制基本动画
无限剪辑: 包含在 Timeline 编辑器窗口中,记录的基本关键动画的剪辑。没有固定大小,无法定位 裁剪 拆分,时间跨越整个动画轨道
创建无限剪辑: 当直接将动画录制到空的动画轨道时,将创建一个无限剪辑。创建之前,用户必须为想要制作动画的GameObject添加一个空的动画轨道在轨道列表中,单击空白轨道的录制按钮以启用录制模式
Chapter15 UGUI
15.1 概述
UGUI 是帮助用户快速直观地创建图形用户界面
15.2 Canvas 画布
15.2.1 Canvas
是存放所有 UI 元素的容器;所有 UI 元素都必须放在画布子节点下
通过 GameObject UI 下的子项创建 GUI 控件时,如果当前不存在画布,系统会自动创建一个画布
画布的渲染模式:
-
Screen Space-Overlay:
使画布拉伸以适应全屏大小。使 GUI 控件在创建中渲染于其他物体的前方画布的大小会根据屏幕大小和分辨率的变化而变化 -
Screen Space-Camera
画布 以特定的距离放置在指定的相机前。UI 元素被指定的相机渲染,其呈现会受相机设置的影响 -
World Space
使画布渲染于世界空间该模式下,画布在场景中与其他游戏对象一样,可以手动调整Rect Transform 来改变画布大小 GUI 控件可能会渲染于其他物体的前方或后方。 -
UI Scale Mode
UI 的缩放模式,在 Canvas Scaler 组件中有如下参数:- Constant Pixel Size: 固定的像素大小
- Scale With Screen Size
- Constant Physical Size:固定的物理大小(厘米,毫米等)
Graphic Raycaster(Script)图形检测组件作用:用于对 Canvas 进行射线检测。
Raycaster 会查看画布上的所有图形,并确定是否有图形已被击中。参数如下:
- Ignore Reversed Graphic:是否忽略背面的图形检测
- Blocking Objects:阻挡图形射线检测的对象的类型
- Blocking Mask:阻挡图形射线检测的遮罩层
15.2.2 Canvas Group
使用 Canvas Group 可以对 UI 元素进行分组,方便同一控制和管理
在 Inspector 中点击 Add Component 按钮后,搜索Canvas Group并添加
参数:
- Alpha: 可以统一调节改组所有UI元素透明度
- Interactable: 控制该组件是否受输入控制
- Block Raycasts: 控制该组件是否作为碰撞起的 RayCasts。不适用于Physics Raycast,当要处理 Canvas 上 UI 元素的 RayCast 时,应调用绑定在 Canvas 上的 Graphic Raycaster 组件的 RayCast 方法。
- Ignore Parent Group: 用于控制是否忽略父对象上的 Canvas Group设置
15.2.3 元素绘制顺序
UI 元素的绘制顺序依赖于它们在 Hierarchy 面板中的顺序
如果两个 UI 元素重叠,后添加的 UI 元素会出现在之前添加的元素的上面
调整 UI 绘制顺序:
- 通过在 Hierarchy 中拖动元素进行排序
- 通过 在脚本中控制 Transform 组件上的: SetAsFirstSibling,SetAsLastSibling,和 SetSiblingIndex 等方法实现
15.3 EventSystem 对象
当UGUI的第一个 Canvas 被创建时,Hierarchy 视图中会自动创建一个 Event -System 对象
包含:
- Event System:用来管理 UI 的事件系统
- Standalone Input Module:独立的输入模块
在处理 UI 的交互上,EventSystem 对象上是必不可少的。如果没有 EventSystem对象,那么 UI 对象就无法处理事件和交互
创建 EventSystem 对象: 点击菜单栏中的 GameObject -> UI -> Event System
15.3.1 Event System 组件
Event System 组件的作用: 该组件负责控制所有 UI 元素的事件,它的当前坐标在输入模块上,每次 Update 时,都会调用 Event System。调用时,通过输入模块和在输入模块里的计算输出标记,将处理的委托返回给本模块
15.3.2 Standalone Input Module 组件
用于设计控制器鼠标输入的工作。按键按下拖动以及类似的事件会发送到响应输入中。该组件通 过输入管理器来发送移动事件,提交取消事件的响应输入。跟踪轴和键值可以通过该组件的属性进行配置。
15.4 基本布局
15.4.1 矩形工具
在 Scene 视图中,使用矩形工具可以平移,旋转,缩放 GUI 控件。
选择一个 UI 元素后,单击工具栏中的矩形工具按钮。可以在控件内的任意位置单击并拖动来改变它的位置,可以在控件的边⻆单击拖动改变其大小,当鼠标指针悬浮在拐⻆附近时,鼠标指针右下方变成一个旋转符号时,可以按住后朝任意方向拖动,以旋转控件。
15.4.2 矩形变换 Rect Transform
一种新的变换组件,适用于在所有的 GUI 控件上来替代原有的 Transform 组件
为了调整布局,一般建议调整 UI 元素的大小,而不是对其进行缩放。因为这样不会影响字体大小,切片图像的边界大小等。
Rect Transform 与 Transfrom 的区别: 在 Scene 中, Transform 组件表示一个点,Rect Transform 表示一个可容纳 UI 元素的矩形,且矩形变换还有锚点,轴心点的功能。
15.4.3 Anchors 锚点
如果一个 Rect Transform 的父对象也是一个 Rect Transform,那么作为子物体的矩形变换可以 通过多种方式固定在父物体的矩形变换上。
子物体可以固定在父物体的中心点或者某一个拐⻆处;在固定锚点时,也允许给予父对象的高或宽按指定的百分比进行拉伸。
Scene 中锚点形状: 四个三⻆形手柄的样式(⻓等腰三⻆形)
锚点的意义: 每个锚点都对应固定于相应父物体的矩形的⻆。
如何使用: 可以单独拖动每一个锚点,当它们在一起的时候,也可以单击它们的中心一起拖动。当按下 Shift 键 拖动锚点时,矩形相应的⻆会跟随锚点一起移动。
如何设置:在 Inspector 视图中,锚点预置按钮在矩形变换组件的左上⻆,单击该按钮可以打开预置锚点的下拉列表,便捷的选择常用锚点选项,可将 GUI 控件固定在父物体的某一边或中心,或拉伸到与父对象相同的大小水平方向和竖直方向的锚点时相互独立的。
在锚点预置列表里,”Shift + 预置“ 可以设置 UI 轴心点。“Alt + 预置” 可以设置 UI 的位置
15.4.4 Pivot 轴心点
旋转和缩放都围绕轴心点发生变化,所以轴心点的位置影响旋转和缩放的结果
15.4.5 补充
蓝图模式:表示是否忽略掉物体的旋转。启用时不能对物体进行旋转
原始的编辑模式:表示当修改 Anchors 时,UI 的位置及尺寸是否会根据Anchors进行匹配
15.5 Text 文本
15.5.1 Text 介绍
显示非交互文本,也可以作为其他 GUI 控件的标题或者标签,也可用于显示指令或其他文本
参数:⻅ P286 表15-4
15.5.2 Rich Text
当该选项启用时,标记元素中的文本将被视为样式信息,所以可以有一个单词或短语采用黑体或 不同的颜色
15.6 Image 图像
用于显示非交互式图像,在其他空间中也可以通过控制脚本来改变 Image控件图像
与Raw Image 区别:控件类似于 Raw Image,Image 提供了更多选项的动画控制和准确的填充控件的功能 Image 需要 Sprite 类型的纹理,Raw Image 可以接受任何类型的纹理。
参数: P287表15-6
Image Type包含的设置项:
- Simple:默认情况下适应控件的矩形大小。如果启用 Preserve Aspect,图像的原始比例将会被保存 剩余的未填充的矩形将会被空白填充
- Sliced: 图片会被切成九宫格模式。图片的中心会被缩放以适应矩形控件,边界仍会保持原有尺寸,禁用 Fill Center 后图像的中心会被挖空。
- Tiled: 图像会保持原始大小。如果控件大小大于原始图像,图像会被会重复填充,控件大小大于原始图像,图像会在边缘处截断。
- Filled: 图像显示为Simple类型。可以通过调节填充模式和参数使图像呈现出 从空白到完整填充的过程。
15.7 Raw Image 原始图像
用来显示非交互图像,可以用于装饰或图标等。可在其他控件中通过脚本来改变原始图像
参数中的 UV 属性作用:UV 属性允许显示一个较大图像的一小部分
15.8 Mask 遮罩
是一种不可⻅的 UI 控件,可以用来修饰控件子元素的外观。遮罩将子元素限制为父物体的形状,超出部分将不显示。
在 Inspector 视图中单机 Add Component 按钮后搜索 Mask 即可添加。Mask(Script) 常与 Image (Script) 控件组合使用
Show Mask Graphic:表示是否绘制该组件上的图形
15.9 过度选项和导航选项
15.9.1 Transition 过渡选项
在 Inspector 视图中单击 Add Component,搜索 Selectable 并添加
参数:⻅ P289 表 15-8, 15-9
15.9.2 Navagation 导航选项
控制 UI 控件的键盘导航如何实现
在 Inspector -> Selectable 组件中,单击 Navigation选项下的 Visualize 按钮,可以在Scene视 图中可视化导航选项。
Button 或 Selectable 的导航可以按键盘 方向键 进行切换
Input Field 之间的导航按 方向键 + Enter 键 组合进行切换
15.10 Button 按钮
响应事件:
- 在 Button 的 Inspector 中单击 OnClick 下的 + 按钮(可视化创建)
- 通过脚本监听事件绑定
- 通过 Event Trigger 实现
P290 – 293
15.11 Togggle 开关
允许用户选中或取消某个选项的复选框。绑定响应事件参照Button
15.12 Slider 滑动条
允许用户通过鼠标从一个预先确定的范围选一个数值。绑定响应事件参照Button
15.13 Scrollbar 滚动条
允许用户滚动因图像或其他可视物体太大而不能完全看到的视图。 Slider 用于选择数值,Scrollbar 用于滚动视图
15.14 Dropdown 下拉列表
P298
15.15 Input Field
可以使输入内容不可⻅的 UI 控件
P301
15.16 Scroll View 滚动视图
当内容空间大于显示区域时,利用滚动来显示其他位置里的内容
15.17 自动布局组件
布局元素可以灵活地控制元素尺寸
- Layout Element
- Content Size Filter
- Aspect Ratio Fitter
- Horizontal Layout Group
- Vertical Layout Group
- Grid Layout Group
Chapter16 音效和视频
16.1 音效系统
16.1.1 概述
音效系统基本理论:由多普勒效应可知,对于观测者来说快速移动的声源发出的频率,会随着声源与观测者间距离的变化而变化。
如何实现模拟声音效果:Unity 要求声源是附加在物体上的音频源(Audio Source),且发出的声音被附在另一个物体上的音频监听器接收,音频监听器通常附加在主相机上。
Unity音效系统如何实现回声:不能纯粹从场景中计算回声,但用户可以通过向对象添加音频过滤器来模拟它们。例如,通过将 Echo 过滤器应用于洞穴内播放的声音在物体可以移入和移出,且具有强回声的地方,可以向场景添加混响区域。
Unity 支持的音频格式 :
- AIFF
- WAV
- MP3
- Ogg
- MOD
- IT
- S3M
- XM
其中AIFF,WAV 格式的短音频的声效适合本地加载使用(音频大但无需解码)。Windows 和 macOS 适合用OggVorbis格式的音频,其音质不会降低。移动平台适合用 MP3格式,非MP3格式会被压缩成MP3,该格式音质较低。
16.1.2 常用组件
16.1.2.1 Audio Clip 音频剪辑
音频剪辑包含音频源使用的音频数据
Unity支持什么种类的音频资源:单声道,立体声,多声道。可以以 .xm, .mod, .it 和 .s3m 格式导入跟踪器模块
跟踪器模块:尽管资源导入属性中没有可用的波形预览,但 TrackModule 跟踪器模块资源的行为方式与 Unity 中的其他音频资源相同
16.1.2.2 Audio Listener 音频监听器
充当类似⻨克⻛的设备,接收来自场景中任何给定音频源的输入,并通过计算机的扬声器播放声 音
适用情况:对于大多数程序,都可以讲音频监听器附加到主相机上。可以位于混响区域的作用范围内(混响适用于场景中所有可听到的声音),音频效果可以应用于 Audio Listener,也可以应用于场景中的所有可听⻅的声源。
在一个场景中,同一时刻只能有一个 Audio Listener
16.1.2.3 Audio Source 音频源
用来播放场景中的音频剪辑,音频剪辑可以通过音频监听器播放,也可以通过音频混音器播放。
可以播放什么类型的音频剪辑:任何类型,并且可以配置为播放 2D,3D或混合(Spatial Blend),音频可在扬声器之间展开,并在 2D和3D之间混合(通过衰减曲线控制距离)。
16.1.3 Audio Mixer 音频混合
16.1.3.1 概述
什么是音频混合: Audio Mixer 是 Audio Sources 可以引用的资源。Audio Mixer 允许混合各种音频源,对它们应用效果以及执行控制
- 音频混合视图
打开音频混合: Window -> Audio Mixer
视图显示: Audio Mixer 窗口显示音频混合器(树状音频混合器组)
音频混合器: 本质上是音频混合。是一个信号链,允许用户在处理音频信号和更改效果参数时插入效果 具有发送和返回机制,可将结果在总线之间传递(1对1)
视图功能: ⻅ P311 图16-6 - 音频混合属性
⻅ P311 图 16-7 - 概念
- 路由和混合:
音频路由: 接收多个输入音频信号,并输出一个或多个输出信号的过程。这里的术语信号,是指数字音频数据的连续流,其可以分解成数字音频通道
功能: 内部通常有一些与信号相关的工作,如混合,应用效果,衰减等
特点: 除了发送和返回外,Audio Mixer 还包含允许任意数量的输入信号,混合这些信号并组成具有1 个输出的音频组
- 路由和混合:
- 声音类别
P312 - Snapshots 快照
允许用户捕获 Audio Mixer 的状态,并在游戏进行时,在这些不同状态之间进行切换,有助于 定义情绪或主题,影响玩家情绪
16.1.3.2 Audio Mixer 窗口详解
Window -> Audio Mixer
-
Mixers 混合面板
显示:所有 Audio Mixer 的完整列表
如何将Audio Mixer路由到另一个Audio Mixer 的 Audio Group:- 在混合面板中操作,在编辑器中更改 Audio Mixer 的输出,单击 Audio Mixer,拖动到另一个 Audio Mixer 的顶部。
- 弹出对话框,选择要路由的目标 Audio Mixer 的 Audio Group
- 选择后,面板将显示 Audio Mixer 的父子关系。并在 Audio Mixer 名称旁边显示其目标 Audio Group
如何创建新的 Audio Mixe:单击 Mixer 面板右上方的 + 号
-
将 Audio Mixers 路由到其它的 Audio Mixers
默认情况下,每个 Audio Mixer 将音频信号直接输出到 AudioListener
路由方式:- 在混音器面板的编辑器中实现
- 在运行时使用 Audio Mixer API 动态实现
-
层次面板(Groups)
显示用户自定义 Audio Mixer 的声音类别和混合结构的位置。允许用户定义自己的 Audio Sources,可以连接和播放的自定义类别 -
在层次结构中添加和配置音频组
在何处添加和修改 Audio Mixer 的拓扑结构:在 Audio Group 层次结构面板中完成如下步骤
添加方式有两种:- 右键单击现有的 Audio Group(已有至少一个Audio Group的情况下),选择 Add child group 或 Add sibling group。
- 单击 Groups 面板右上⻆的 + 按钮
更改方式: 将一个Audio Group 拖动到另一个 Audio Group 的顶部,可以修改 Audio Mixer 的拓扑结构,这将使目标 Audio Group 在所选择的一个以上
删除方式: 选中一个 Audio Group 后,单击键盘 Delete 键。或者右键要删除的组,选择 Remove group
复制方式: 右键单击某个 Audio Group,选择 Duplicate group。该操作将完全复制该 Audio Group,包括其中的效果
重命名方式: 右键单击,选择 Rename。或者选中后单击 F2 键 -
音频组视图
位置: Audio Mixer 视窗的右半部分
结构: 竖条 Slider 调节每个 Group 的音量(垂直VU表),VU表下方为三个按钮,SMB,按钮下方为 DSP 效果单元。
SMB作用: S: Solo, M: Mute, B: Bypass(允许用户绕过或启用 Aduio Group中的全部效果)
DSP 效果⻅ P315 图 16-14 -
快照面板 Snapshot
允许用户在 Audio Mixer 内创建,切换,调整不同的快照。始终至少有一个快照处于活动状态,在面板中的快照选择表示 Audio Mixer 的进一步编辑将对该快照进行编辑。面板中定义的快照,也显示为 Audio Mixer 的子资源,允许用户访问编辑器和脚本中的其他位置的快照。
星号意义:代表用户自定义的开始快照 Start snapshots,在Audio Mixer加载时初始化
创建快照:单击快照面板右上⻆ + 号,输入新快照的名称,要定义不同的开始快照: 右键单击所需的快照,选择Set as start Snapshot -
视图面板Views
作用:- 允许用户在 Audio Mixer 中创建可⻅的 Audio Group
- 有了视图,用户可以创建对 Audio Mixer 感兴趣的视⻆,而非始终显示完整的层次结构
- 仅用于优化工作流,并不影响运行时的设置或性能
操作:
- 添加新视图:Views面板右上⻆ + 按钮
- 更改显示:选择不同的视图,更改当前显示视图
- 删除视图:右键单击,选择 Delete
- 复制视图:使用所有当前视图设置,右击选择Duplicate
Audio Group 的 Eye 图标作用:显示 or 隐藏
16.1.3.3 音频组属性
- Inspector Header
- Edit in Playmode
- Pitch Slider
- Attenuation Unit
- Effect Units
- Send Units
- Receive Units
- Duck Volume Unit
- 常用选项
- Exposed Parameters
- Transition Overrides
- Audio Mixer
P317 – P321
16.1.4 Audio Filters 音频过滤
- Audio Low Pass Filter
音频低通滤波器,传低频去高频 - Audio High Pass Filter
音频高通滤波器,传高频去低频 - Audio Echo Filter
音频回声滤波器,在给定的延迟时间后重复声音(衰减比) - Audio Distortion Filter
音频失真滤波器,使 Audio Source 的声音失真或声音到达 AudioListener - Audio Reverb Filter
音频混响滤波器,采用音频剪辑使其变形以创建自定义混响效果 - Audio Chorus Filter
音频合唱滤波器,创建合唱效果
16.1.5 Audio Effects 音频效果
通过音频效果修改音频混合器组件的输出,改变声音的频率范围或应用混响
16.1.6 Microphone ⻨克⻛
从计算机或移动设备的⻨克⻛中捕获语音输入