NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Framework/Audio/AudioConstant.cs

190 lines
4.6 KiB
C#

/// <summary>
/// 音频系统常量定义
/// </summary>
public static class AudioConstant
{
#region Playback Limits
/// <summary>
/// 最大音乐播放数
/// </summary>
public const int MaxMusicCount = 1;
/// <summary>
/// 最大音效播放数
/// </summary>
public const int MaxSoundCount = 100;
/// <summary>
/// 最大语音播放数
/// </summary>
public const int MaxSpeakCount = 1;
/// <summary>
/// 音乐播放池上限
/// </summary>
public const int MusicPlayingLimit = 1;
/// <summary>
/// 音效播放池上限
/// </summary>
public const int SoundPlayingLimit = 16;
/// <summary>
/// 语音播放池上限
/// </summary>
public const int SpeakPlayingLimit = 8;
#endregion
#region Priority Values
/// <summary>
/// 最高优先级
/// </summary>
public const int MaxPriority = 99;
/// <summary>
/// 最低优先级
/// </summary>
public const int MinPriority = 0;
/// <summary>
/// 默认优先级
/// </summary>
public const int DefaultPriority = 29;
/// <summary>
/// 低优先级
/// </summary>
public const int LowPriority = 30;
#endregion
#region Fade Duration
/// <summary>
/// 默认淡入时长(秒)
/// </summary>
public const float DefaultFadeInDuration = 2f;
/// <summary>
/// 默认淡出时长(秒)
/// </summary>
public const float DefaultFadeOutDuration = 2f;
#endregion
#region Stopped Pool Limits
/// <summary>
/// 音乐停止池上限
/// </summary>
public const int MusicStoppedLimit = 0;
/// <summary>
/// 音效停止池上限
/// </summary>
public const int SoundStoppedLimit = 16;
/// <summary>
/// 语音停止池上限
/// </summary>
public const int SpeakStoppedLimit = 1;
#endregion
#region Stopped Pool Timeout
/// <summary>
/// 音乐停止池超时时间(秒)- 长时间未使用则释放
/// </summary>
public const float MusicStoppedTimeout = 60f;
/// <summary>
/// 音效停止池超时时间(秒)- 长时间未使用则释放
/// </summary>
public const float SoundStoppedTimeout = 30f;
/// <summary>
/// 语音停止池超时时间(秒)- 长时间未使用则释放
/// </summary>
public const float SpeakStoppedTimeout = 20f;
/// <summary>
/// 停止池超时检查间隔(秒)- 降低检查频率
/// </summary>
public const float StoppedPoolCheckInterval = 1f;
#endregion
}
/// <summary>
/// 音频池容量配置
/// <para>用于配置播放池和停止池的容量上限</para>
/// </summary>
public struct AudioPoolConfig
{
/// <summary>
/// 音乐播放池上限
/// </summary>
public int MusicPlayingLimit;
/// <summary>
/// 音效播放池上限
/// </summary>
public int SoundPlayingLimit;
/// <summary>
/// 语音播放池上限
/// </summary>
public int SpeakPlayingLimit;
/// <summary>
/// 音乐停止池上限
/// </summary>
public int MusicStoppedLimit;
/// <summary>
/// 音效停止池上限
/// </summary>
public int SoundStoppedLimit;
/// <summary>
/// 语音停止池上限
/// </summary>
public int SpeakStoppedLimit;
/// <summary>
/// 音乐停止池超时时间(秒)- 长时间未使用则释放
/// </summary>
public float MusicStoppedTimeout;
/// <summary>
/// 音效停止池超时时间(秒)- 长时间未使用则释放
/// </summary>
public float SoundStoppedTimeout;
/// <summary>
/// 语音停止池超时时间(秒)- 长时间未使用则释放
/// </summary>
public float SpeakStoppedTimeout;
/// <summary>
/// 默认配置
/// </summary>
public static AudioPoolConfig Default => new AudioPoolConfig
{
MusicPlayingLimit = AudioConstant.MusicPlayingLimit,
SoundPlayingLimit = AudioConstant.SoundPlayingLimit,
SpeakPlayingLimit = AudioConstant.SpeakPlayingLimit,
MusicStoppedLimit = AudioConstant.MusicStoppedLimit,
SoundStoppedLimit = AudioConstant.SoundStoppedLimit,
SpeakStoppedLimit = AudioConstant.SpeakStoppedLimit,
MusicStoppedTimeout = AudioConstant.MusicStoppedTimeout,
SoundStoppedTimeout = AudioConstant.SoundStoppedTimeout,
SpeakStoppedTimeout = AudioConstant.SpeakStoppedTimeout,
};
}