2025-03-31 11:49:53 +08:00
|
|
|
|
using System.Collections;
|
2025-03-06 17:24:31 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
2025-03-31 11:49:53 +08:00
|
|
|
|
namespace Stary.Evo.AudioCore
|
2025-03-06 17:24:31 +08:00
|
|
|
|
{
|
2025-03-07 17:52:50 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// Audio数据
|
2025-03-07 17:52:50 +08:00
|
|
|
|
/// </summary>
|
2025-03-26 09:34:52 +08:00
|
|
|
|
public struct AudioData
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 延迟播放时间
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public float delayTime;
|
2025-03-07 17:52:50 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 音频
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public AudioClip clip;
|
2025-03-07 17:52:50 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 音量
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public float volume;
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 回调行为
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public System.Action onComplete;
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 延迟回调执行的时间
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public float delayOnCompleteTime;
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 自然过渡时间
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public float fadeDuration;
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 是否不打断上一段对话
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public bool isNotOverVoice;
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 是否是3D声音
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public bool is3D;
|
2025-03-07 17:52:50 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 3D声音载体
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public GameObject soundObject;
|
|
|
|
|
|
}
|
2025-03-07 17:52:50 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
public interface IAudio
|
|
|
|
|
|
{
|
|
|
|
|
|
void Play(AudioData audioData);
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
void Stop(AudioData audioData);
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
public abstract class AbstractAudio : IAudio
|
|
|
|
|
|
{
|
|
|
|
|
|
public abstract void Play(AudioData audioData);
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
public abstract void Stop(AudioData audioData);
|
2025-03-06 17:24:31 +08:00
|
|
|
|
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// <summary>
|
2025-03-31 11:49:53 +08:00
|
|
|
|
/// 音频数据初始化
|
2025-03-26 09:34:52 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="audioData"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public virtual AudioData AudioDataInitialize(AudioData audioData)
|
2025-03-07 17:52:50 +08:00
|
|
|
|
{
|
2025-03-26 09:34:52 +08:00
|
|
|
|
if (audioData.volume == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
audioData.volume = 1f;
|
|
|
|
|
|
}
|
|
|
|
|
|
return audioData;
|
2025-03-07 17:52:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-03-06 17:24:31 +08:00
|
|
|
|
}
|