diff --git a/Assets/Fungus/Scripts/Commands/PlayAmbienceSound.cs b/Assets/Fungus/Scripts/Commands/PlayAmbienceSound.cs new file mode 100644 index 00000000..c893dd2f --- /dev/null +++ b/Assets/Fungus/Scripts/Commands/PlayAmbienceSound.cs @@ -0,0 +1,69 @@ +// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus). +// It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) + +using UnityEngine; + +namespace Fungus +{ + /// + /// Plays a once-off sound effect. Multiple sound effects can be played at the same time. + /// + [CommandInfo("Audio", + "Play Ambience Sound", + "Plays a once-off sound effect. Multiple sound effects can be played at the same time.")] + [AddComponentMenu("")] + public class PlayAmbienceSound : Command + { + [Tooltip("Sound effect clip to play")] + [SerializeField] + protected AudioClip soundClip; + + [Range(0, 1)] + [Tooltip("Volume level of the sound effect")] + [SerializeField] + protected float volume = 1; + + [Tooltip("Sound effect clip to play")] + [SerializeField] + protected bool loop; + + protected virtual void DoWait() + { + Continue(); + } + + #region Public members + + public override void OnEnter() + { + if (soundClip == null) + { + Continue(); + return; + } + + var musicManager = FungusManager.Instance.MusicManager; + + musicManager.PlayAmbienceSound(soundClip, loop, volume); + + Continue(); + } + + public override string GetSummary() + { + if (soundClip == null) + { + return "Error: No sound clip selected"; + } + + return soundClip.name; + } + + public override Color GetButtonColor() + { + return new Color32(242, 209, 176, 255); + } + + #endregion + } +} diff --git a/Assets/Fungus/Scripts/Components/MusicManager.cs b/Assets/Fungus/Scripts/Components/MusicManager.cs index c89744e8..9b969490 100644 --- a/Assets/Fungus/Scripts/Components/MusicManager.cs +++ b/Assets/Fungus/Scripts/Components/MusicManager.cs @@ -74,6 +74,20 @@ namespace Fungus audioSource.PlayOneShot(soundClip, volume); } + /// + /// Plays a sound effect with optional looping values, at the specified volume. + /// + /// The sound effect clip to play. + /// If the audioclip should loop or not. + /// The volume level of the sound effect. + public virtual void PlayAmbienceSound(AudioClip soundClip, bool loop, float volume) + { + audioSource.loop = loop; + audioSource.clip = soundClip; + audioSource.volume = volume; + audioSource.Play(); + } + /// /// Shifts the game music pitch to required value over a period of time. ///