FMOD Studio User Manual 2.02

18. 事件宏绘制器引用

FMOD Studio 项目中的每个事件都有宏控件,可进一步控制事件的音调、事件的创建方式、可以存在多少事件实例 以及当游戏中创建了太多实例时这些实例的行为。

事件宏具有最小和最大距离的事件宏

18.1 如何阅读本参考资料

属性(控制)
出现在 FMOD Studio 中的属性名称,以及操作控件类型。控件的类型有:
按钮: 单击按钮以执行命令。一些按钮是黄色的切换按钮,用于显示是否处于活动状态。
表盘: 控制旋钮。通过单击并上下拖动,调整属性的值。
下拉菜单: 用于从列表中选择属性值的菜单。当前选择显示在折叠的下拉菜单中。
数字框: 显示属性值的框。单击该框的编辑三角形,手动输入一个值,或拖动该值进行调整。双击数字框,重置其值。
单位
属性的计量单位是什么。如果属性不使用计量单位,则不会列出任何单位。有效单位是:
st: 半音
%: 百分点
ms: 毫秒
sec: 秒
范围
对该属性有效的最小值和最大值。如果属性不使用范围,则不会列出。
链接到 API 文档
有关该属性及其在代码中用法的更多信息,请使用所提供的指向 FMOD 核心 API 文档的链接。

18.2 持久性

持久性

持久性属性用于保持事件实例一直播放,直到被明确告知停止为止。

如果启用了持久性选项,即使不产生音频,该选项也会强制事件继续播放。不然,则会停止播放。

如果未启用持久属性,且没有发声器被触发并且时间轴回放位置超出时间轴的末端(即超出最后一个标记或发声器触发区域的结尾,则事件将自行终止。

持久属性用于避免一些情况,比如某个事件只有在其参数达到一定值时才会触发发声器,但由于没有音频产生,该事件会自动停止。例如,某个医疗事件,只有当监测玩家健康状况的参数达到 20% 以下时才会产生心跳声(健康时则保持无声)。

快照始终以持久的方式运行。

持久性 (按钮)
启用后,该按钮将导致事件继续播放,直到被明确告知停止为止。

18.3 音高

音高属性

事件的音高属性调整放置在事件中的所有发声器的采样率。如果事件中任何发声器的音高属性发生了变化,则发声器的音高属性会与事件的音高属性相加。

以这种方式调整采样率时,会影响事件的播放速度。这会加快或减慢事件的速度,从而提高或降低事件的输出音高。

在游戏中可以使用这种音高,通过增加音高给人一种快进磁带的错觉,减少音高给人一种子弹时间的错觉。

音高 (数字框)
调整事件的回放速度。以半音(st)计量。
单位: 半音
范围: -24 个半音 至 24 个半音

18.4 多普勒

多普勒

多普勒属性根据事件发射器相对于听者的速度自动调整事件的 音调。当事件发射器向听者移动时,事件的音调升高。当事件发射器远离听者时,事件的音调会降低。这模拟了音频发射器的相对速度接近声速时听者体验到的多普勒效应。

多普勒属性需要速度才能计算需要应用多少多普勒调整。速度可以由游戏引擎提供,也可通过调用EventInstance::set3DAttributes 来提供。在 Unity 和 Unreal Engine 集成的情况下,多普勒属性的速度通常会自动设置为与其关联的 RigidbodyRigidBody 的速度相匹配。

单击多普勒按钮启用或禁用此功能。多普勒效应期间发生的音高调整量由缩放属性确定。

多普勒的一个常见用途是高速通过听者的车辆。

多普勒 (按钮)
启用或禁用事件的多普勒效应。

有关多普勒效应的更多信息,请参阅FMOD API 用户手册 白皮书。

18.5 多普勒缩放

多普勒缩放

多普勒缩放属性是启用多普勒时多普勒应用于事件的音高调整量的线性缩放因子。将此属性设置为 0% 可防止将任何多普勒效应应用于该事件。

对于要受到多普勒效应影响的事件,其必须具有速度。默认情况下,传递给 FMOD Studio API 的速度以米/秒为单位。通过设置游戏代码中指定的 dopplerscaledistancefactor 可以更改此测量单位以匹配游戏中使用的单位。有关详细信息,请参阅 FMOD API 用户手册系统::set3DSettings部分。

需要启用 多普勒 属性才能调整多普勒缩放属性。

无法在 FMOD Studio 中试听多普勒效应或多普勒缩放调整。

多普勒缩放 (数字框)
调整多普勒效应应用于事件的音调量。
单位: %
范围: 0% 至 500%

有关多普勒效应的更多信息,请参阅FMOD API用户手册3D事件白皮书多普勒部分。

18.6 最大实例数

最大实例数

最大实例数属性设置了事件可以同时播放实例数量的上限。

如果游戏代码尝试播放事件的新实例,并且创建该事件实例会导致事件实例数量超过事件的最大实例数属性属性中设置的数量,则根据事件的窃取属性挑选或虚拟化实例。

这限制了同时播放事件实例的数量,防止同时播放太多的事件实例。当游戏包含频繁的碰撞触发事件时,如墙壁倒塌后碎片物体与地板碰撞,该属性会尤其有用。

最大实例数 (数字框)
调整一次可以播放该事件的多少个实例。
范围: 1 到 64, 然后 ∞

18.7 窃取

窃取

当事件的并发实例数超过其最大实例数属性时,事件的窃取属性决定事件实例应如何停止或虚拟化

窃取行为可以设置为以下行为之一:

  • 最旧: 停止最早启动的事件实例。
  • 最远: 停止距离听者最远的事件实例。
  • 最安静: 停止声音最小的事件实例,并考虑距离衰减。
  • 虚拟化: 最安静事件实例将被虚拟化,即被创建(若必要)并播放,但在现有事件实例停止之前不会产生输出。
  • : 不会发生窃取,因此在现有事件实例停止之前不能播放新的事件实例。

设置窃取行为对于确保玩家不会注意到受影响的事件实例逐渐静音非常重要。例如,当有很多频繁的碰撞触发事件时,例如在墙壁倒塌后大量碎片物体与地板发生碰撞时,窃取最旧的实例则很好用。环境声音,例如地牢中的许多火炬,可以很好地与虚拟化配合使用,在虚拟化中,最安静的火炬将变得无声,让位于更近、更响亮的火炬。

窃取 (下拉菜单)
达到播放的最大事件实例数后选择所需的行为。
范围: 最旧、最远、最安静、虚拟化、无

18.8 冷却时间

冷却时间

“冷却时间”属性决定在事件的一个实例开始播放后,此事件的一个实例可以播放多长时间。

“冷却时间”属性可用于确保同一事件的两个实例不会同时播放。同时播放可能会导致相位问题。这可以用在诸如拾音这样的情况下,玩家可以同时拾取许多项目。

冷却时间 (数字框)
再次播放此事件的实例所需的时间。
单位: 毫秒,秒
范围: 0.00 毫秒 to 60.0 秒

18.9 优先级

优先级

优先级属性根据虚拟化设置此事件发声器的重要性。发声器中的每个发声器或播放列表项都算作一个语音。

如果创建新语音会超出游戏引擎的语音限制,FMOD 会窃取或虚拟化语音。为事件分配优先级,即表示分配其中发声器的重要性。

优先级从“最高”到“最低”排列,事件中的所有发声器都按此优先级设置分组。具有较高优先级的事件不会被具有较低优先级事件的发声器窃取。

在相同优先级的事件实例组中,总音量值较高的发声器具有较高的优先级,而总音量值较低的发声器则具有较低的优先级。总音量值是事件主轨道的音量设置、事件实例的setVolume()的值、距离衰减(由空间化效果器设置的衰减)、发声器的音量设置、发声器的峰值音量,以及任何与发声器或事件的音量有关的自动控制和/或调制

将事件的优先级设置为“最高”将导致事件中的所有声音永远不会虚拟化,即使有效音量为零并且启用了vol0virtual,也是如此。

此属性有助于确保游戏必不可少的事件发声器(例如背景音乐和对话)不会被不太重要的事件发声器(例如脚步声和氛围)窃取。

优先级(数字框)
选择事件对于窃取和虚拟化的重要性。
范围: 最低、低、中、高、最高

有关虚拟化的更多信息,请参阅高级主题章节的窃取和虚拟化部分和虚拟语音系统白皮书FMOD API 用户手册

有关优先级的更多信息,请参见FMOD API 用户手册Studio API 引用章节的STUDIO::EVENT instance子章节fmod _ STUDIO _ EVENT _ property部分。

18.10 最小和最大距离

最小和最大距离

空间化效果器使用最小和最大距离属性来计算衰减。此外,标准化距离属性的值是使用最小和最大距离属性值计算的。

最小和最大距离(可拖动滑块)
调整空间化效果器使用的最小和最大距离。
范围: 0 至 10000