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



持久性属性用于保持事件实例一直播放,直到被明确告知停止为止。
如果启用了持久性选项,即使不产生音频,该选项也会强制事件继续播放。不然,则会停止播放。
如果未启用持久属性,且没有发声器被触发并且时间轴的回放位置超出时间轴的末端(即超出最后一个标记或发声器触发区域的结尾,则事件将自行终止。
持久属性用于避免一些情况,比如某个事件只有在其参数达到一定值时才会触发发声器,但由于没有音频产生,该事件会自动停止。例如,某个医疗事件,只有当监测玩家健康状况的参数达到 20% 以下时才会产生心跳声(健康时则保持无声)。
快照始终以持久的方式运行。

事件的音高属性调整放置在事件中的所有发声器的采样率。如果事件中任何发声器的音高属性发生了变化,则发声器的音高属性会与事件的音高属性相加。
以这种方式调整采样率时,会影响事件的播放速度。这会加快或减慢事件的速度,从而提高或降低事件的输出音高。
在游戏中可以使用这种音高,通过增加音高给人一种快进磁带的错觉,减少音高给人一种子弹时间的错觉。

多普勒属性根据事件发射器相对于听者的速度自动调整事件的 音调。当事件发射器向听者移动时,事件的音调升高。当事件发射器远离听者时,事件的音调会降低。这模拟了音频发射器的相对速度接近声速时听者体验到的多普勒效应。
多普勒属性需要速度才能计算需要应用多少多普勒调整。速度可以由游戏引擎提供,也可通过调用EventInstance::set3DAttributes 来提供。在 Unity 和 Unreal Engine 集成的情况下,多普勒属性的速度通常会自动设置为与其关联的 Rigidbody 或 RigidBody 的速度相匹配。
单击多普勒按钮启用或禁用此功能。多普勒效应期间发生的音高调整量由缩放属性确定。
多普勒的一个常见用途是高速通过听者的车辆。
有关多普勒效应的更多信息,请参阅FMOD API 用户手册 白皮书。

多普勒缩放属性是启用多普勒时多普勒应用于事件的音高调整量的线性缩放因子。将此属性设置为 0% 可防止将任何多普勒效应应用于该事件。
对于要受到多普勒效应影响的事件,其必须具有速度。默认情况下,传递给 FMOD Studio API 的速度以米/秒为单位。通过设置游戏代码中指定的 dopplerscale 和 distancefactor 可以更改此测量单位以匹配游戏中使用的单位。有关详细信息,请参阅 FMOD API 用户手册 的系统::set3DSettings部分。
需要启用 多普勒 属性才能调整多普勒缩放属性。
无法在 FMOD Studio 中试听多普勒效应或多普勒缩放调整。
有关多普勒效应的更多信息,请参阅FMOD API用户手册中3D事件白皮书的多普勒部分。

最大实例数属性设置了事件可以同时播放实例数量的上限。
如果游戏代码尝试播放事件的新实例,并且创建该事件实例会导致事件实例数量超过事件的最大实例数属性属性中设置的数量,则根据事件的窃取属性挑选或虚拟化实例。
这限制了同时播放事件实例的数量,防止同时播放太多的事件实例。当游戏包含频繁的碰撞触发事件时,如墙壁倒塌后碎片物体与地板碰撞,该属性会尤其有用。

当事件的并发实例数超过其最大实例数属性时,事件的窃取属性决定事件实例应如何停止或虚拟化。
窃取行为可以设置为以下行为之一:
- 最旧: 停止最早启动的事件实例。
- 最远: 停止距离听者最远的事件实例。
- 最安静: 停止声音最小的事件实例,并考虑距离衰减。
- 虚拟化: 最安静事件实例将被虚拟化,即被创建(若必要)并播放,但在现有事件实例停止之前不会产生输出。
- 无: 不会发生窃取,因此在现有事件实例停止之前不能播放新的事件实例。
设置窃取行为对于确保玩家不会注意到受影响的事件实例逐渐静音非常重要。例如,当有很多频繁的碰撞触发事件时,例如在墙壁倒塌后大量碎片物体与地板发生碰撞时,窃取最旧的实例则很好用。环境声音,例如地牢中的许多火炬,可以很好地与虚拟化配合使用,在虚拟化中,最安静的火炬将变得无声,让位于更近、更响亮的火炬。

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

优先级属性根据虚拟化设置此事件发声器的重要性。发声器中的每个发声器或播放列表项都算作一个语音。
如果创建新语音会超出游戏引擎的语音限制,FMOD 会窃取或虚拟化语音。为事件分配优先级,即表示分配其中发声器的重要性。
优先级从“最高”到“最低”排列,事件中的所有发声器都按此优先级设置分组。具有较高优先级的事件不会被具有较低优先级事件的发声器窃取。
在相同优先级的事件实例组中,总音量值较高的发声器具有较高的优先级,而总音量值较低的发声器则具有较低的优先级。总音量值是事件主轨道的音量设置、事件实例的setVolume()的值、距离衰减(由空间化效果器设置的衰减)、发声器的音量设置、发声器的峰值音量,以及任何与发声器或事件的音量有关的自动控制和/或调制。
将事件的优先级设置为“最高”将导致事件中的所有声音永远不会虚拟化,即使有效音量为零并且启用了vol0virtual,也是如此。
此属性有助于确保游戏必不可少的事件发声器(例如背景音乐和对话)不会被不太重要的事件发声器(例如脚步声和氛围)窃取。
有关虚拟化的更多信息,请参阅高级主题章节的窃取和虚拟化部分和虚拟语音系统白皮书FMOD API 用户手册。
有关优先级的更多信息,请参见FMOD API 用户手册的Studio API 引用章节的STUDIO::EVENT instance子章节fmod _ STUDIO _ EVENT _ property部分。

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