65 lines
1.4 KiB
C#
65 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class SoundPlayer : MonoBehaviour
|
|
{
|
|
public List<AudioClip> musics;
|
|
public List<AudioClip> sfx;
|
|
public AudioSource thisAS;
|
|
public static SoundPlayer instance;
|
|
|
|
// Start is called before the first frame update
|
|
void Awake()
|
|
{
|
|
instance = this;
|
|
thisAS = GetComponent<AudioSource>();
|
|
thisAS.clip = musics[0];
|
|
thisAS.volume = .5f;
|
|
thisAS.Play();
|
|
}
|
|
|
|
public void PlaySong(int i)
|
|
{
|
|
StartCoroutine(ChangeMusic(i));
|
|
}
|
|
|
|
public void PlaySFX(int i)
|
|
{
|
|
thisAS.PlayOneShot(sfx[i], .7f);
|
|
}
|
|
|
|
public void ToggleMute()
|
|
{
|
|
thisAS.volume = thisAS.volume == 0 ? .5f : 0;
|
|
}
|
|
|
|
IEnumerator Fadein()
|
|
{
|
|
for (float i = 0; i < .5f; i += .05f)
|
|
{
|
|
thisAS.volume = i;
|
|
yield return new WaitForSecondsRealtime(.1f);
|
|
}
|
|
thisAS.volume = .5f;
|
|
}
|
|
|
|
IEnumerator FadeOut()
|
|
{
|
|
for (float i = .5f; i > 0f; i -= .05f)
|
|
{
|
|
thisAS.volume = i;
|
|
yield return new WaitForSecondsRealtime(.1f);
|
|
}
|
|
thisAS.volume = 0f;
|
|
}
|
|
|
|
IEnumerator ChangeMusic(int i)
|
|
{
|
|
yield return StartCoroutine(FadeOut());
|
|
thisAS.clip = musics[i];
|
|
thisAS.Play();
|
|
yield return StartCoroutine(Fadein());
|
|
}
|
|
}
|