OldBlueWater/BlueWater/Assets/Crest/Crest-Examples/PirateCove/Scripts/DemoMusic.cs
2023-08-01 13:03:57 +09:00

66 lines
1.3 KiB
C#

// Crest Ocean System
// Copyright 2020 Wave Harmonic Ltd
using System.Collections;
using UnityEngine;
namespace Crest.Examples
{
[RequireComponent(typeof(AudioSource))]
public class DemoMusic : MonoBehaviour
{
[SerializeField] float _stopTime = 175f;
public static DemoMusic Instance { get; private set; }
AudioSource _src;
private void Awake()
{
if (Instance != null)
{
Destroy(gameObject);
return;
}
Instance = this;
_src = GetComponent<AudioSource>();
DontDestroyOnLoad(gameObject);
}
void Update()
{
if (_src.time > _stopTime)
{
_src.Stop();
}
}
public void Play()
{
_src.Play();
}
public void FadeOut()
{
StartCoroutine(FadeOutMusic(_src, 2f));
}
private static IEnumerator FadeOutMusic(AudioSource a, float duration)
{
float startVolume = a.volume;
while (a.volume > 0f)
{
a.volume -= startVolume * Time.deltaTime / duration;
yield return new WaitForEndOfFrame();
}
Destroy(a.gameObject);
}
}
}