Files
plugin-library/Assets/04.AudioCore/RunTime/Abstract/IAudio.cs
2025-12-19 11:55:13 +08:00

106 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
namespace Stary.Evo.AudioCore
{
/// <summary>
/// Audio数据
/// </summary>
public struct AudioData
{
/// <summary>
/// 延迟播放时间
/// </summary>
public float delayTime;
/// <summary>
/// 音频
/// </summary>
public AudioClip clip;
/// <summary>
/// 音量
/// </summary>
public float volume;
/// <summary>
/// 回调行为
/// </summary>
public System.Action onComplete;
/// <summary>
/// 延迟回调执行的时间
/// </summary>
public float delayOnCompleteTime;
/// <summary>
/// 自然过渡时间
/// </summary>
public float fadeDuration;
/// <summary>
/// 是否不打断上一段对话
/// </summary>
public bool isNotOverVoice;
/// <summary>
/// 是否是3D音频
/// </summary>
public bool is3DAudio;
/// <summary>
/// 3D声音位置
/// </summary>
public Vector3 audio3DPosition;
/// <summary>
/// 3D声音最大距离
/// </summary>
public float audio3DMaxDistance;
/// <summary>
/// 异步取消令牌
/// </summary>
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(){}
/// <summary>
/// 音频数据初始化
/// </summary>
/// <param name="audioData"></param>
/// <returns></returns>
public virtual AudioData AudioDataInitialize(AudioData audioData)
{
if (audioData.volume == 0)
{
audioData.volume = 1f;
}
if (audioData.fadeDuration == 0)
{
audioData.fadeDuration = 1f;
}
return audioData;
}
}
}