Browse Source

Added SetAudioVolume.waitUntilFinished property #495

master
Christopher 9 years ago
parent
commit
bd66d6df6c
  1. 17
      Assets/Fungus/Audio/Scripts/Commands/SetAudioVolume.cs
  2. 10
      Assets/Fungus/Audio/Scripts/MusicController.cs

17
Assets/Fungus/Audio/Scripts/Commands/SetAudioVolume.cs

@ -11,21 +11,32 @@ namespace Fungus
{
[Range(0,1)]
[Tooltip("Global volume level for audio played using Play Music and Play Sound")]
public float volume = 1;
public float volume = 1f;
[Range(0,30)]
[Tooltip("Time to fade between current volume level and target volume level.")]
public float fadeDuration;
public float fadeDuration = 1f;
[Tooltip("Wait until the volume fade has completed before continuing.")]
public bool waitUntilFinished = true;
public override void OnEnter()
{
MusicController musicController = MusicController.GetInstance();
if (musicController != null)
{
musicController.SetAudioVolume(volume, fadeDuration);
musicController.SetAudioVolume(volume, fadeDuration, () => {
if (waitUntilFinished)
{
Continue();
}
});
}
if (!waitUntilFinished)
{
Continue();
}
}
public override string GetSummary()

10
Assets/Fungus/Audio/Scripts/MusicController.cs

@ -87,12 +87,13 @@ namespace Fungus
* Fades the game music volume to required level over a period of time.
* @param volume The new music volume value [0..1]
* @param duration The length of time in seconds needed to complete the volume change.
* @param onComplete Delegate function to call when fade completes.
*/
public virtual void SetAudioVolume(float volume, float duration)
public virtual void SetAudioVolume(float volume, float duration, System.Action onComplete)
{
AudioSource audio = GetComponent<AudioSource>();
if (duration == 0f)
if (Mathf.Approximately(duration, 0f))
{
audio.volume = volume;
return;
@ -103,6 +104,11 @@ namespace Fungus
volume,
duration).setOnUpdate( (v) => {
audio.volume = v;
}).setOnComplete( () => {
if (onComplete != null)
{
onComplete();
}
});
}

Loading…
Cancel
Save