mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
feat(audio): 添加多种音频播放类型和音量控制方法
- 新增PlaySfx、PlayVoice和PlayAmbient方法用于播放不同类型音频 - 为音乐、音效、语音和环境音效添加独立的音量设置与获取接口 - 扩展IAudioManagerSystem接口以支持新的音频控制功能 - 在AbstractAudioManagerSystem中实现新增的音频播放逻辑 - 提供GetMusicVolume、GetSoundVolume等获取当前音量的方法 - [no tag]
This commit is contained in:
parent
396cc589bc
commit
b7739dd1df
@ -203,6 +203,63 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
player.Play();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放特效音效
|
||||
/// </summary>
|
||||
/// <param name="audioPath">音频文件路径</param>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
/// <param name="pitch">音调调整</param>
|
||||
public virtual void PlaySfx(string audioPath, float volume = 1.0f, float pitch = 1.0f)
|
||||
{
|
||||
if (AvailableSoundPlayers.Count == 0) return;
|
||||
|
||||
var audioStream = ResourceLoadSystem?.LoadResource<AudioStream>(audioPath);
|
||||
if (audioStream == null) return;
|
||||
|
||||
var player = AvailableSoundPlayers.Dequeue();
|
||||
player.Stream = audioStream;
|
||||
player.VolumeDb = LinearToDb(volume * SfxVolume * MasterVolume);
|
||||
player.Play();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放语音
|
||||
/// </summary>
|
||||
/// <param name="audioPath">音频文件路径</param>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
/// <param name="pitch">音调调整</param>
|
||||
public virtual void PlayVoice(string audioPath, float volume = 1.0f, float pitch = 1.0f)
|
||||
{
|
||||
if (AvailableSoundPlayers.Count == 0) return;
|
||||
|
||||
var audioStream = ResourceLoadSystem?.LoadResource<AudioStream>(audioPath);
|
||||
if (audioStream == null) return;
|
||||
|
||||
var player = AvailableSoundPlayers.Dequeue();
|
||||
player.Stream = audioStream;
|
||||
player.VolumeDb = LinearToDb(volume * VoiceVolume * MasterVolume);
|
||||
player.Play();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 播放环境音效
|
||||
/// </summary>
|
||||
/// <param name="audioPath">音频文件路径</param>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
/// <param name="pitch">音调调整</param>
|
||||
public virtual void PlayAmbient(string audioPath, float volume = 1.0f, float pitch = 1.0f)
|
||||
{
|
||||
if (AvailableSoundPlayers.Count == 0) return;
|
||||
|
||||
var audioStream = ResourceLoadSystem?.LoadResource<AudioStream>(audioPath);
|
||||
if (audioStream == null) return;
|
||||
|
||||
var player = AvailableSoundPlayers.Dequeue();
|
||||
player.Stream = audioStream;
|
||||
player.VolumeDb = LinearToDb(volume * AmbientVolume * MasterVolume);
|
||||
player.Play();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过资源ID播放音效
|
||||
/// </summary>
|
||||
@ -272,6 +329,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
MusicPlayer.VolumeDb = LinearToDb(MusicVolume * MasterVolume);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取背景音乐音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
public virtual float GetMusicVolume()
|
||||
{
|
||||
return MusicVolume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置音效音量
|
||||
@ -281,6 +347,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
{
|
||||
SoundVolume = volume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取音效音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
public virtual float GetSoundVolume()
|
||||
{
|
||||
return SoundVolume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置主音量
|
||||
@ -296,6 +371,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
MusicPlayer.VolumeDb = LinearToDb(MusicVolume * MasterVolume);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取主音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
public virtual float GetMasterVolume()
|
||||
{
|
||||
return MasterVolume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置SFX音量
|
||||
@ -305,6 +389,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
{
|
||||
SfxVolume = volume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取SFX音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
public virtual float GetSfxVolume()
|
||||
{
|
||||
return SfxVolume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置语音音量
|
||||
@ -314,6 +407,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
{
|
||||
VoiceVolume = volume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取语音音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
public virtual float GetVoiceVolume()
|
||||
{
|
||||
return VoiceVolume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置环境音量
|
||||
@ -323,6 +425,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
||||
{
|
||||
AmbientVolume = volume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取环境音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
public virtual float GetAmbientVolume()
|
||||
{
|
||||
return AmbientVolume;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查背景音乐是否正在播放
|
||||
|
||||
@ -24,6 +24,30 @@ public interface IAudioManagerSystem : ISystem
|
||||
/// <param name="pitch">音调调整</param>
|
||||
void PlaySound(string audioPath, float volume = 1.0f, float pitch = 1.0f);
|
||||
|
||||
/// <summary>
|
||||
/// 播放特效音效
|
||||
/// </summary>
|
||||
/// <param name="audioPath">音频文件路径</param>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
/// <param name="pitch">音调调整</param>
|
||||
void PlaySfx(string audioPath, float volume = 1.0f, float pitch = 1.0f);
|
||||
|
||||
/// <summary>
|
||||
/// 播放语音
|
||||
/// </summary>
|
||||
/// <param name="audioPath">音频文件路径</param>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
/// <param name="pitch">音调调整</param>
|
||||
void PlayVoice(string audioPath, float volume = 1.0f, float pitch = 1.0f);
|
||||
|
||||
/// <summary>
|
||||
/// 播放环境音效
|
||||
/// </summary>
|
||||
/// <param name="audioPath">音频文件路径</param>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
/// <param name="pitch">音调调整</param>
|
||||
void PlayAmbient(string audioPath, float volume = 1.0f, float pitch = 1.0f);
|
||||
|
||||
/// <summary>
|
||||
/// 停止背景音乐
|
||||
/// </summary>
|
||||
@ -45,18 +69,72 @@ public interface IAudioManagerSystem : ISystem
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
void SetMusicVolume(float volume);
|
||||
|
||||
/// <summary>
|
||||
/// 获取背景音乐音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
float GetMusicVolume();
|
||||
|
||||
/// <summary>
|
||||
/// 设置音效音量
|
||||
/// </summary>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
void SetSoundVolume(float volume);
|
||||
|
||||
/// <summary>
|
||||
/// 获取音效音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
float GetSoundVolume();
|
||||
|
||||
/// <summary>
|
||||
/// 设置特效音量
|
||||
/// </summary>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
void SetSfxVolume(float volume);
|
||||
|
||||
/// <summary>
|
||||
/// 获取特效音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
float GetSfxVolume();
|
||||
|
||||
/// <summary>
|
||||
/// 设置语音音量
|
||||
/// </summary>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
void SetVoiceVolume(float volume);
|
||||
|
||||
/// <summary>
|
||||
/// 获取语音音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
float GetVoiceVolume();
|
||||
|
||||
/// <summary>
|
||||
/// 设置环境音量
|
||||
/// </summary>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
void SetAmbientVolume(float volume);
|
||||
|
||||
/// <summary>
|
||||
/// 获取环境音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
float GetAmbientVolume();
|
||||
|
||||
/// <summary>
|
||||
/// 设置主音量
|
||||
/// </summary>
|
||||
/// <param name="volume">音量大小,范围0-1</param>
|
||||
void SetMasterVolume(float volume);
|
||||
|
||||
/// <summary>
|
||||
/// 获取主音量
|
||||
/// </summary>
|
||||
/// <returns>音量大小,范围0-1</returns>
|
||||
float GetMasterVolume();
|
||||
|
||||
/// <summary>
|
||||
/// 检查背景音乐是否正在播放
|
||||
/// </summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user