feat: AudioSettings 独立出配置文件,而不是零散在代码各处。
This commit is contained in:
@@ -14,9 +14,7 @@ namespace OCES.Audio
|
||||
public class SfxSystem : MonoBehaviour
|
||||
{
|
||||
public UnityEngine.UI.Text audioSystemTextBox;
|
||||
|
||||
const int k_maxGlobalConcurrent = 128;
|
||||
|
||||
|
||||
//记录某个 AudioObject 最近一次触发播放的时刻,用于 MinInterval 节流判断,是"上次什么时候播过"。
|
||||
readonly Dictionary<uint, double> m_lastPlayTime = new();
|
||||
readonly Dictionary<uint, int> m_clipConcurrentCount = new();
|
||||
@@ -78,11 +76,11 @@ namespace OCES.Audio
|
||||
this.m_pitchStepResolver = new PitchStepResolver();
|
||||
this.m_volumeStepResolver = new VolumeStepResolver();
|
||||
|
||||
AudioMixerGroup[] sfx = Find("Master/Regular/SFX");
|
||||
AudioMixerGroup[] sfx = Find(AudioExtendSettings.Instance.sfxGroupPath);
|
||||
if (sfx.Length > 0) this.m_sfxGroup = sfx[0];
|
||||
AudioMixerGroup[] voice = Find("Master/Regular/Voice");
|
||||
AudioMixerGroup[] voice = Find(AudioExtendSettings.Instance.voiceGroupPath);
|
||||
if (voice.Length > 0) this.m_voiceGroup = voice[0];
|
||||
AudioMixerGroup[] accentSfx = Find("Master/SFX_Accent");
|
||||
AudioMixerGroup[] accentSfx = Find(AudioExtendSettings.Instance.accentSfxGroupPath);
|
||||
if (accentSfx.Length > 0) this.m_accentSfxGroup = accentSfx[0];
|
||||
|
||||
return;
|
||||
@@ -224,7 +222,8 @@ namespace OCES.Audio
|
||||
}
|
||||
|
||||
// 第四层:全局并发控制
|
||||
if (this.m_activeSounds.Count >= k_maxGlobalConcurrent)
|
||||
//从Unity原生Audio Settings中读取最大发音数限制
|
||||
if (this.m_activeSounds.Count >= AudioSettings.GetConfiguration().numVirtualVoices)
|
||||
{
|
||||
this.m_tempLowerPriority.Clear();
|
||||
foreach (ActiveSound activeSound in this.m_activeSounds)
|
||||
@@ -405,7 +404,9 @@ namespace OCES.Audio
|
||||
bool SetupSource(AudioSource source, ActiveSound activeSound, int clipIndex = 0)
|
||||
{
|
||||
AudioObject audioObject = activeSound.AudioObject;
|
||||
AudioClip clip = AudioSystem.Instance.ResourceLoader.LoadSync<AudioClip>($"Audios/{audioObject.Name[clipIndex]}");
|
||||
AudioClip clip =
|
||||
AudioSystem.Instance.ResourceLoader.LoadSync<AudioClip>(
|
||||
$"{AudioExtendSettings.Instance.audioResourcePath}/{audioObject.Name[clipIndex]}");
|
||||
if (!clip)
|
||||
{
|
||||
Debug.LogError($"音频文件未找到:{audioObject.Name[clipIndex]}");
|
||||
|
||||
Reference in New Issue
Block a user