You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PlumberUltimateAds/Assets/Scripts/Music.cs

109 lines
1.7 KiB
C#

2 months ago
/*
http://www.cgsoso.com/forum-211-1.html
CG Unity3d Unity3d VIP
CGSOSO CG
daily assets update for try.
U should buy the asset from home store if u use it in your project!
*/
using System.Collections;
using UnityEngine;
public class Music : MonoBehaviour
{
public enum Type
{
None,
MainMusic
}
public AudioSource audioSource;
public static Music instance;
[HideInInspector]
public AudioClip[] musicClips;
private Type currentType;
private void Awake()
{
instance = this;
}
public bool IsMuted()
{
return !IsEnabled();
}
public bool IsEnabled()
{
return CUtils.GetBool("music_enabled", defaultValue: true);
}
public void SetEnabled(bool enabled, bool updateMusic = false)
{
CUtils.SetBool("music_enabled", enabled);
if (updateMusic)
{
UpdateSetting();
}
}
public void Play(Type type)
{
if (type != 0 && (currentType != type || !audioSource.isPlaying))
{
StartCoroutine(PlayNewMusic(type));
}
}
public void Play()
{
Play(currentType);
}
public void Stop()
{
audioSource.Stop();
}
private IEnumerator PlayNewMusic(Type type)
{
while (audioSource.volume >= 0.1f)
{
audioSource.volume -= 0.2f;
yield return new WaitForSeconds(0.1f);
}
audioSource.Stop();
currentType = type;
audioSource.clip = musicClips[(int)type];
if (IsEnabled())
{
audioSource.Play();
}
audioSource.volume = 1f;
}
private void UpdateSetting()
{
if (!(audioSource == null))
{
if (IsEnabled())
{
Play();
}
else
{
audioSource.Stop();
}
}
}
}