audio_play_sound_on

此函数通过发射器播放任何声音资源,发射器增益、位置、音调或速度的任何更改都会影响用户听到最终播放声音的方式。

注意当声音停止播放时,会触发一个音频播放结束事件。

您提供要使用的发射器索引、要播放的声音资源,然后指定是否循环播放声音。接下来,您可以指定一个优先级,该优先级用于确定当播放的声音数量超过函数audio_channel_num()设置的限制时如何处理声音。较低优先级的声音将被停止,以支持较高优先级的声音,优先级值可以是任何实数(实际值是任意的,可以是 0 到 1 或 0 到 100,因为GameMaker会优先考虑它们相同)。请注意,处理优先级时,数字越高优先级越高,因此优先级为 100 的声音将优先于优先级为 1 的声音。

此函数还将返回正在播放的声音的唯一索引,该索引可以存储在变量中,以便以后暂停停止。 这意味着,如果在同一时间播放同一声音的多个实例,则可以使用音频函数只瞄准该声音的一个实例。

可选属性

有四个可选参数可让您更改在实例/语音级别播放的声音的音频属性

... [gain], [offset], [pitch], [listener_mask]

它们立即应用于声音。这解决了调用单独的函数来更改任何这些值时可能会遇到的问题,这可能会导致更改出现意外的延迟。

这些属性将乘以声音资源的相应值。有关完整概述,请参阅音频属性概述

注意要在开始播放声音后更改这些属性中任意属性的值,请参见audio_sound_gain获取增益,audio_sound_set_track_position了解偏移,audio_sound_pitch表示音调,audio_sound_set_listener_mask表示收听者掩码。

 

语法:

audio_play_sound_on(emitter, sound, loop, priority, [gain], [offset], [pitch], [listener_mask]);

参数类型描述
emitterAudio Emitter ID要使用的发射器的索引。
soundSound Asset要使用的声音的索引。
loopBoolean将声音标记为循环或不循环。
priorityReal设置声音的通道优先级。
gainReal可选声音实例的增益(默认为 1)。
offsetReal可选开始播放的时间(以秒为单位)。超出声音末尾的值将被限制在其长度内。默认值是资产级别偏移量,该值在提供时会覆盖它。
pitchReal可选音调乘数(默认为 1)。
listener_maskReal可选 为声音设置的位掩码数据。在HTML5目标上,这不会有任何影响,因为目标不支持多个侦听器。

 

返回:

Sound Instance ID

 

示例1:

if (global.SFX)
{
    audio_play_sound_on(s_emit, snd_Explode, false, 1);
}

上述代码检查全局变量"SFX",如果它返回true,则变量"snd_Explode"中索引的声音将通过变量"s_emit"中索引的发射器播放,具有低优先级且无循环。

示例2:

if (hit == true)
{
    audio_play_sound_on(s_emit, snd_Hit, false, 1, 1.3);
}

上面的代码检查执行代码的实例是否命中。如果为真,则通过发射器"s_emit"播放声音"snd_Hit",增益略高1.3。此处设置的增益乘以发射器的增益,得到播放声音的最终增益。