using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
namespace Stary.Evo.AudioCore
{
///
/// Audio数据
///
public struct AudioData
{
///
/// 延迟播放时间
///
public float delayTime;
///
/// 音频
///
public AudioClip clip;
///
/// 音量
///
public float volume;
///
/// 回调行为
///
public System.Action onComplete;
///
/// 延迟回调执行的时间
///
public float delayOnCompleteTime;
///
/// 自然过渡时间
///
public float fadeDuration;
///
/// 是否不打断上一段对话
///
public bool isNotOverVoice;
///
/// 是否是3D音频
///
public bool is3DAudio;
///
/// 3D声音位置
///
public Vector3 audio3DPosition;
///
/// 3D声音最大距离
///
public float audio3DMaxDistance;
///
/// 异步取消令牌
///
public CancellationToken cancellationToken;
}
public interface IAudio
{
void Play(AudioData audioData);
void Stop(AudioData audioData);
void Stop();
}
public abstract class AbstractAudio : IAudio
{
public abstract void Play(AudioData audioData);
public virtual void Stop(AudioData audioData){}
public virtual void Stop(){}
///
/// 音频数据初始化
///
///
///
public virtual AudioData AudioDataInitialize(AudioData audioData)
{
if (audioData.volume == 0)
{
audioData.volume = 1f;
}
if (audioData.fadeDuration == 0)
{
audioData.fadeDuration = 1f;
}
return audioData;
}
}
}