FMOD Studio User Manual 2.02
参数是一个事件属性,可用于触发和控制事件的发声器、逻辑标记和可自动控制属性,其值可由游戏代码设置。本章详细描述了每种类型参数的属性、设置和行为。
有关向事件添加参数以及参数在游戏中的可能用途的信息,请参阅创作事件一章的参数一节和参数一章。
预设参数的设置可在编辑参数对话框中更改。

以下设置是大多数预置参数的通用设置。
studio::System::getparameterbyname和studio::System::setparameterbyname。有关获取和设置局部参数实例值的信息,请参见studio::eventinstance::getparameterbyname出现在“编辑参数”对话框中的其他属性特定于某些类型的参数。
可在参数操作台中查看某些附加参数属性。

参数操作台可用于设定参数的当前值,以及预设参数的速度和寻道速度设置。
当参数同时受寻道速度和速率影响时,将参数设置为新值会导致参数以其寻道速度指定的速率渐变到该值,然后以其速率指定的速率继续移动。
预设参数的每个属性和设置在基于该预设参数的所有参数之间共享。
与所有其他参数类型不同,时间轴不引用预设参数,并且无法使用编辑参数对话框创建或更改。时间轴可以包含逻辑标记,但不能用于发声器的参数触发条件或逻辑标记。

一个事件最多只能包含一个时间轴参数。时间轴不能命名。
时间轴的最小值始终为 0。时间轴的最大值基于该参数上最右边的逻辑标记或工具。时间轴的初始值始终为 0。
时间轴参数总是范围中的局部的,时间轴的值不能是被调制或被自动控制的。
当包含该参数的事件实例正在播放时,时间轴的值会自动前进,除非其当前值达到延音点。时间轴前进的速度由事件的音高属性缩放,该属性位于事件的宏绘制器。

游戏代码可以使用Studio::EventInstance::getTimelinePosition和 [Studio::EventInstance::setTimelinePosition] 获取和设置时间轴的值 (%api%studio-api-eventinstance.html#studio_eventinstance_settimelineposition)。
如果非持久事件实例的时间轴达到最大值并且该事件实例中没有其他内容正在播放,则该实例自动进入停止[播放状态] (advanced-topics.html#play-state)。
用户参数是可以自定义以表示游戏中任何变量的参数。与内置参数和时间轴参数不同,用户参数不会自动更新,必须由游戏代码设置或通过自动控制或调制器进行调整。
以下设置是预设用户参数的通用设置,可在编辑参数对话框中更改。
连贯型用户参数使用浮点(十进制)数。
每个连贯参数都有一个定义其范围的最小值和最大值,并且可以设置为该范围内的任何浮点值。
连贯参数的初始值可以是其范围内的任意浮点数。
名称型用户参数使用字符串(标签)而不是数值。可在编辑参数对话框中查看和编辑名称型参数的标签。

名称型参数的范围自动从其标签派生,并且始终为 0 到 n,其中 n 是其最后一个标签的索引。可以在编辑参数对话框中查看与每个标签关联的值。
名称型参数的初始值可以是其范围内的任何标签。
离散型用户参数使用整数(整数)。
每个离散参数都有一个定义其范围的最小值和最大值,并且可以设置为该范围内的任何整数值。
名称型参数的初始值可以是其范围内的任何整数。
内置参数是其值会根据游戏引擎中事件实例和听者的3D属性自动更新的参数。
在 FMOD Studio 中试听时,可通过在3D 预览工具中移动事件实例,或在编辑器中改变其内置参数的值来改变试听事件实例的 3D 属性。
内置参数始终是范围的局部。
有关向事件添加参数的信息,请参阅“创作事件”章节的参数部分。
为了在游戏代码中设置事件实例位置和听者位置,FMOD Studio 使用 3D 笛卡尔坐标系,其中 x 和 z 轴用于描述水平面,x 和 y 轴用于描述垂直面。
有关如何在游戏代码中设置 3D 属性的更多信息,请参见FMOD API用户手册中的Studio::EventInstance::set3DAttributes and Studio::System::setListenerAttributes。

以下是本节中使用的所有图表的图例。

距离参数类型表示听者和事件实例之间的距离。该参数使用与游戏引擎相同的距离单位。
每个距离参数都有一个最小值和最大值,并自动设置为事件实例和最近的听者之间的距离。该范围可以定制。值为 0 时,事件实例最接近听者。值越高代表距离越大。
在事件编辑器窗口中试听时,将3D 预览中的事件实例移向或移离听者会更改事件的距离参数值。
请注意,由System::set3DSettings中的 distancefactor 属性设置的游戏的距离系数对距离参数计算的距离没有任何影响。经计算的距离基于设置听者位置和事件实例时使用的单位。

距离(标准化)参数类型表示听者和事件实例之间的距离。与距离参数类型不同,距离(标准化)参数类型不使用与游戏引擎相同的距离单位,并且没有可设置的最小值和最大值。它的范围是从 0 到 1,其中 0 表示使用该参数的事件的最小距离属性,1 表示该事件的最大距离属性。
每个距离(标准化)参数都自动设置为与事件实例和最近的听者之间的距离相对应的值。如果事件实例和发射器之间的游戏距离单位距离小于或等于事件的最小距离属性,则距离(标准化)参数设置为 0; 如果游戏距离单位中的距离大于或等于事件的最大距离属性,则距离(标准化)参数设置为 1; 如果游戏距离单位中的距离介于事件的最小距离和最大距离之间,则距离(标准化)参数设置为(d-i)/(a-i),其中d 是事件实例与以游戏单位表示的最近的听者之间的距离,i是事件的最小距离属性,a 是事件的最大距离属性。
在事件编辑器窗口中试听时,将3D预览中的事件实例移向或移离监听器会更改事件的距离(标准化)参数的值。
请注意,由System::set3DSettings中的 distancefactor 属性设置的游戏的距离系数对距离参数计算的距离没有任何影响。经计算的距离基于设置听者位置和事件实例时使用的单位。
方向参数类型是听者所面对的方向与从听者到事件实例的方向之间的角度,并以度为单位。
方向参数的最小值为 -180,最大值为 180。每个都自动设置为听者面对的方向与水平面上从听者到事件实例的方向之间的角度。0° 位于听者正前方,-180°; 或 180° 位于正后方,-90°; 位于听者的左侧, 90°;位于听者的右侧。方向参数仅考虑听者的水平 (xz)平面。
方向参数与事件锥角参数不同,方向参数是基于从听者到事件实例的方向,而事件锥角参数是基于从事件实例到听者的方向。
在事件编辑器窗口中试听时,在3D 预览中围绕听者移动事件实例会改变方向参数的值。

仰角参数类型是听者所面对的方向与垂直方向 (xy)上从听者到事件实例的方向之间的角度平面,以度为单位。
每个仰角参数的最小值为 -90,最大值为 90,并自动设置为由听者的前向和左向量形成的平面(称为“听者的水平面”)与听者之间的向量之间的角度和事件实例。0°时是指听者的水平面与听者和事件实例之间的向量相匹配。90°是指听者的水平面直接在听者和事件实例之间的向量下方时(即事件实例在听者上方),并且在 -90°;就是听者的水平面直接位于听者的正上方(即事件实例位于听者下方)。仰角不考虑听者是否正在查看事件实例。
仰角参数可用于事件实例在听者上方或下方听起来不同的重要情况,例如当玩家在第一次世界大战时期的双翼飞机上时。
在事件编辑器窗口中试听时,将3D预览中的事件实例移动到听者上方或下方会更改仰角参数的值。可通过按住 Ctrl 键并拖动事件实例来执行此操作。

事件锥角参数类型是事件实例所面对的方向与从它到听者方向之间的角度,以度为单位。
事件锥角参数的最小值为 0,最大值为 180。每个都自动设置为事件实例所面对的方向与事件实例在水平面上到听者方向之间的角度的绝对值。呈 0° 时,事件实例面向听者,呈 180° 时,事件实例背对听者。事件锥角仅考虑水平面 (xz)。
事件锥角参数与方向参数的不同之处在于,方向参数基于从听者到事件实例的方向,而事件锥角参数基于从事件实例到听者的方向。
某些事件表示以非球形方式发出声音的对象,例如电视或扩音器,此参数类型可用于定义此类事件的行为方式。它通常用于定义事件的发射锥的大小。
在事件编辑器窗口中试听时,在3D预览中旋转事件实例会改变事件锥角参数的值。

事件方向参数类型是听者所面对的方向与事件实例所面对的方向之间的角度,以度为单位。
事件方向参数的最小值为 -180,最大值为 180。每个都自动设置为听者面对的方向和事件实例面对的方向之间的角度,在水平面上测量。如果听者和实例都面向同一方向,则角度为 0°。当听者和事件实例转向相反的方向时,角度向最大值 180°增加。事件方向参数仅考虑水平面 (xz)上的方向。
当事件代表听者周围的声音而不是来自单个点源时,事件方向参数很有用,例如风的环境,根据听众相对于风向的方向,听起来是不同的。
在事件编辑器窗口中试听时,在3D预览中旋转事件实例会改变事件方向参数的值。在沙盒窗口中旋转听者也会更改事件方向参数的值。

速度(相对)参数类型表示事件实例相对于听者的速度。它以每秒距离为单位进行测量,并使用与游戏引擎相同的距离单位。
每个速度参数都有一个最小值 0 和一个最大值,并自动设置为事件实例相对于听者移动的速度。当事件实例以与听者相同的速度和相同的方向移动时,速度参数的值为零。值越高表示速度差异越大。例如,如果听者以 1 个单位/秒的速率移动,而事件实例以 10 个单位/秒的速率向相反方向移动,则速度参数的值为 11。
速度参数的范围可以自定义。速度参数的最大值必须大于其最小值,其最小值不能小于零。
试听事件时,3D 预览工具和沙盒不会更改速度参数的值。
速度(绝对)参数类型表示事件实例相对于它正在移动的空白空间的速度。它以每秒距离为单位进行测量,并使用与游戏引擎相同的距离单位。
每个速度参数都有一个最小值 0 和一个最大值,并自动设置为事件实例相对于游戏中使用的 3D 坐标系中的0,0,0 位置移动的速度。当事件实例的位置不变时,速度(绝对)参数的值为零,值越大代表速度越快。例如,如果事件实例以每秒 4 个单位的速度移动,则速度(绝对)参数的值为 4。
听者的速度和方向对事件的速度(绝对)没有影响。
速度参数的范围可以自定义。速度参数的最大值必须大于其最小值,其最小值不能小于零。
试听事件时,3D 预览工具和沙盒不会更改速度参数的值。