mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-24 20:34:29 +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();
|
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>
|
/// <summary>
|
||||||
/// 通过资源ID播放音效
|
/// 通过资源ID播放音效
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -272,6 +329,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
|||||||
MusicPlayer.VolumeDb = LinearToDb(MusicVolume * MasterVolume);
|
MusicPlayer.VolumeDb = LinearToDb(MusicVolume * MasterVolume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取背景音乐音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
public virtual float GetMusicVolume()
|
||||||
|
{
|
||||||
|
return MusicVolume;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置音效音量
|
/// 设置音效音量
|
||||||
@ -281,6 +347,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
|||||||
{
|
{
|
||||||
SoundVolume = volume;
|
SoundVolume = volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取音效音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
public virtual float GetSoundVolume()
|
||||||
|
{
|
||||||
|
return SoundVolume;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置主音量
|
/// 设置主音量
|
||||||
@ -296,6 +371,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
|||||||
MusicPlayer.VolumeDb = LinearToDb(MusicVolume * MasterVolume);
|
MusicPlayer.VolumeDb = LinearToDb(MusicVolume * MasterVolume);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取主音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
public virtual float GetMasterVolume()
|
||||||
|
{
|
||||||
|
return MasterVolume;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置SFX音量
|
/// 设置SFX音量
|
||||||
@ -305,6 +389,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
|||||||
{
|
{
|
||||||
SfxVolume = volume;
|
SfxVolume = volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取SFX音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
public virtual float GetSfxVolume()
|
||||||
|
{
|
||||||
|
return SfxVolume;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置语音音量
|
/// 设置语音音量
|
||||||
@ -314,6 +407,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
|||||||
{
|
{
|
||||||
VoiceVolume = volume;
|
VoiceVolume = volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取语音音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
public virtual float GetVoiceVolume()
|
||||||
|
{
|
||||||
|
return VoiceVolume;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置环境音量
|
/// 设置环境音量
|
||||||
@ -323,6 +425,15 @@ public abstract class AbstractAudioManagerSystem : AbstractSystem, IAudioManager
|
|||||||
{
|
{
|
||||||
AmbientVolume = volume;
|
AmbientVolume = volume;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取环境音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
public virtual float GetAmbientVolume()
|
||||||
|
{
|
||||||
|
return AmbientVolume;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查背景音乐是否正在播放
|
/// 检查背景音乐是否正在播放
|
||||||
|
|||||||
@ -24,6 +24,30 @@ public interface IAudioManagerSystem : ISystem
|
|||||||
/// <param name="pitch">音调调整</param>
|
/// <param name="pitch">音调调整</param>
|
||||||
void PlaySound(string audioPath, float volume = 1.0f, float pitch = 1.0f);
|
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>
|
||||||
/// 停止背景音乐
|
/// 停止背景音乐
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -45,18 +69,72 @@ public interface IAudioManagerSystem : ISystem
|
|||||||
/// <param name="volume">音量大小,范围0-1</param>
|
/// <param name="volume">音量大小,范围0-1</param>
|
||||||
void SetMusicVolume(float volume);
|
void SetMusicVolume(float volume);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取背景音乐音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
float GetMusicVolume();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置音效音量
|
/// 设置音效音量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="volume">音量大小,范围0-1</param>
|
/// <param name="volume">音量大小,范围0-1</param>
|
||||||
void SetSoundVolume(float volume);
|
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>
|
||||||
/// 设置主音量
|
/// 设置主音量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="volume">音量大小,范围0-1</param>
|
/// <param name="volume">音量大小,范围0-1</param>
|
||||||
void SetMasterVolume(float volume);
|
void SetMasterVolume(float volume);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取主音量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>音量大小,范围0-1</returns>
|
||||||
|
float GetMasterVolume();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 检查背景音乐是否正在播放
|
/// 检查背景音乐是否正在播放
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user