Browse Source

Fixed issues where there woudln't be enough audio sources for the ambiance. Added Stop Ambiance command.

master
Hector Castelli Zacharias 7 years ago
parent
commit
522b2d44d6
  1. 0
      Assets/Fungus/Scripts/Commands/PlayAmbianceSound.cs
  2. 11
      Assets/Fungus/Scripts/Commands/PlayAmbienceSound.cs.meta
  3. 35
      Assets/Fungus/Scripts/Commands/StopAmbiance.cs
  4. 44
      Assets/Fungus/Scripts/Components/MusicManager.cs

0
Assets/Fungus/Scripts/Commands/PlayAmbienceSound.cs → Assets/Fungus/Scripts/Commands/PlayAmbianceSound.cs

11
Assets/Fungus/Scripts/Commands/PlayAmbienceSound.cs.meta

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 1e466cf468c490144a240a8f7a566455
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

35
Assets/Fungus/Scripts/Commands/StopAmbiance.cs

@ -0,0 +1,35 @@
// 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
{
/// <summary>
/// Stops the currently playing game music.
/// </summary>
[CommandInfo("Audio",
"Stop Ambiance",
"Stops the currently playing game ambiance.")]
[AddComponentMenu("")]
public class StopAmbiance : Command
{
#region Public members
public override void OnEnter()
{
var musicManager = FungusManager.Instance.MusicManager;
musicManager.StopAmbiance();
Continue();
}
public override Color GetButtonColor()
{
return new Color32(242, 209, 176, 255);
}
#endregion
}
}

44
Assets/Fungus/Scripts/Components/MusicManager.cs

@ -1,7 +1,7 @@
// This code is part of the Fungus library (http://fungusgames.com) maintained by Chris Gregan (http://twitter.com/gofungus). // 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) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE)
using UnityEngine; using UnityEngine;
namespace Fungus namespace Fungus
{ {
@ -9,14 +9,25 @@ namespace Fungus
/// Music manager which provides basic music and sound effect functionality. /// Music manager which provides basic music and sound effect functionality.
/// Music playback persists across scene loads. /// Music playback persists across scene loads.
/// </summary> /// </summary>
[RequireComponent(typeof(AudioSource))] //[RequireComponent(typeof(AudioSource))]
public class MusicManager : MonoBehaviour public class MusicManager : MonoBehaviour
{ {
protected AudioSource audioSource; protected AudioSource audioSource;
protected AudioSource audioSourceAmbiance;
void Reset()
{
int audioSourceCount = this.GetComponents<AudioSource>().Length;
for (int i = 0; i < 2 - audioSourceCount; i++)
gameObject.AddComponent<AudioSource>();
}
protected virtual void Awake() protected virtual void Awake()
{ {
audioSource = GetComponent<AudioSource>(); Reset();
audioSource = GetComponents<AudioSource>()[0];
audioSourceAmbiance = GetComponents<AudioSource>()[1];
} }
protected virtual void Start() protected virtual void Start()
@ -82,10 +93,10 @@ namespace Fungus
/// <param name="volume">The volume level of the sound effect.</param> /// <param name="volume">The volume level of the sound effect.</param>
public virtual void PlayAmbianceSound(AudioClip soundClip, bool loop, float volume) public virtual void PlayAmbianceSound(AudioClip soundClip, bool loop, float volume)
{ {
audioSource.loop = loop; audioSourceAmbiance.loop = loop;
audioSource.clip = soundClip; audioSourceAmbiance.clip = soundClip;
audioSource.volume = volume; audioSourceAmbiance.volume = volume;
audioSource.Play(); audioSourceAmbiance.Play();
} }
/// <summary> /// <summary>
@ -99,6 +110,7 @@ namespace Fungus
if (Mathf.Approximately(duration, 0f)) if (Mathf.Approximately(duration, 0f))
{ {
audioSource.pitch = pitch; audioSource.pitch = pitch;
audioSourceAmbiance.pitch = pitch;
if (onComplete != null) if (onComplete != null)
{ {
onComplete(); onComplete();
@ -109,9 +121,12 @@ namespace Fungus
LeanTween.value(gameObject, LeanTween.value(gameObject,
audioSource.pitch, audioSource.pitch,
pitch, pitch,
duration).setOnUpdate( (p) => { duration).setOnUpdate((p) =>
{
audioSource.pitch = p; audioSource.pitch = p;
}).setOnComplete( () => { audioSourceAmbiance.pitch = p;
}).setOnComplete(() =>
{
if (onComplete != null) if (onComplete != null)
{ {
onComplete(); onComplete();
@ -134,6 +149,7 @@ namespace Fungus
onComplete(); onComplete();
} }
audioSource.volume = volume; audioSource.volume = volume;
audioSourceAmbiance.volume = volume;
return; return;
} }
@ -142,6 +158,7 @@ namespace Fungus
volume, volume,
duration).setOnUpdate((v) => { duration).setOnUpdate((v) => {
audioSource.volume = v; audioSource.volume = v;
audioSourceAmbiance.volume = v;
}).setOnComplete(() => { }).setOnComplete(() => {
if (onComplete != null) if (onComplete != null)
{ {
@ -159,6 +176,15 @@ namespace Fungus
audioSource.clip = null; audioSource.clip = null;
} }
/// <summary>
/// Stops playing game ambiance.
/// </summary>
public virtual void StopAmbiance()
{
audioSourceAmbiance.Stop();
audioSourceAmbiance.clip = null;
}
#endregion #endregion
} }
} }
Loading…
Cancel
Save