75 lines
1.4 KiB
C#
75 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Reflection;
|
|
using log4net;
|
|
using PrimeTween;
|
|
using UnityEngine;
|
|
|
|
public class ManageableAudio : MonoBehaviour
|
|
{
|
|
private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
|
|
public int id = 0;
|
|
public string audioTag = "audio";
|
|
public AudioSource AudioSource { get; set; }
|
|
|
|
private bool IsUpdating = false;
|
|
|
|
void Awake()
|
|
{
|
|
if (gameObject.TryGetComponent(out AudioSource audioS))
|
|
{
|
|
AudioSource = audioS;
|
|
}
|
|
else
|
|
{
|
|
Log.Warn("Managable Audio Instance hasn't got an audio source game object"
|
|
+ $". Tag:{audioTag} ID:{id}");
|
|
return;
|
|
}
|
|
}
|
|
|
|
public void PlayAudio()
|
|
{
|
|
if (AudioSource == null || IsUpdating || AudioSource.isPlaying)
|
|
{
|
|
return;
|
|
}
|
|
if (!AudioSource.enabled)
|
|
{
|
|
AudioSource.enabled = true;
|
|
}
|
|
AudioSource.Play();
|
|
}
|
|
|
|
public void StopAudio()
|
|
{
|
|
if (AudioSource == null || IsUpdating)
|
|
{
|
|
return;
|
|
}
|
|
if (AudioSource.isPlaying)
|
|
{
|
|
AudioSource.Stop();
|
|
}
|
|
}
|
|
|
|
public void FadeOutAudio(float duration = 1)
|
|
{
|
|
if (IsUpdating)
|
|
{
|
|
return;
|
|
}
|
|
IsUpdating = true;
|
|
float initVolume = AudioSource.volume;
|
|
Tween.Custom(initVolume, 0, duration, onValueChange: value => AudioSource.volume = value)
|
|
.OnComplete(() =>
|
|
{
|
|
IsUpdating = false;
|
|
StopAudio();
|
|
AudioSource.volume = initVolume;
|
|
});
|
|
}
|
|
}
|