71 lines
1.2 KiB
C#
71 lines
1.2 KiB
C#
using UnityEngine;
|
|
|
|
public class EnviroAudioSource : MonoBehaviour
|
|
{
|
|
public enum AudioSourceFunction
|
|
{
|
|
Weather1 = 0,
|
|
Weather2 = 1,
|
|
Ambient = 2,
|
|
Thunder = 3
|
|
}
|
|
|
|
public AudioSourceFunction myFunction;
|
|
|
|
public AudioSource audiosrc;
|
|
|
|
public bool isFadingIn;
|
|
|
|
public bool isFadingOut;
|
|
|
|
public float fadingSpeed = 0.1f;
|
|
|
|
private void Start()
|
|
{
|
|
if (audiosrc == null)
|
|
{
|
|
audiosrc = GetComponent<AudioSource>();
|
|
}
|
|
if (myFunction == AudioSourceFunction.Weather1 || myFunction == AudioSourceFunction.Weather2)
|
|
{
|
|
audiosrc.loop = true;
|
|
audiosrc.volume = 0f;
|
|
}
|
|
}
|
|
|
|
public void FadeOut()
|
|
{
|
|
isFadingOut = true;
|
|
isFadingIn = false;
|
|
}
|
|
|
|
public void FadeIn(AudioClip clip)
|
|
{
|
|
isFadingIn = true;
|
|
isFadingOut = false;
|
|
audiosrc.clip = clip;
|
|
audiosrc.Play();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (isFadingIn && audiosrc.volume < 1f)
|
|
{
|
|
audiosrc.volume += fadingSpeed * Time.deltaTime;
|
|
}
|
|
else if (isFadingIn && audiosrc.volume >= 0.999f)
|
|
{
|
|
isFadingIn = false;
|
|
}
|
|
if (isFadingOut && audiosrc.volume > 0f)
|
|
{
|
|
audiosrc.volume -= fadingSpeed * Time.deltaTime;
|
|
}
|
|
else if (isFadingOut && audiosrc.volume == 0f)
|
|
{
|
|
isFadingOut = false;
|
|
audiosrc.Stop();
|
|
}
|
|
}
|
|
}
|