refactor: 使用ActiveSound对象传递音高和音量参数

This commit is contained in:
2026-04-13 17:27:59 +08:00
parent 31d117851e
commit d42a60cd62
@@ -212,7 +212,7 @@ namespace OCES.Audio
/// <summary>
/// 连续容器播放协程(Random / Sequence 持续模式)
/// </summary>
IEnumerator PlayContainerContinuous(AudioSource source, AudioObject audioObject, ActiveSound chainActive, int startIndex, float pitch, float volume)
IEnumerator PlayContainerContinuous(AudioSource source, AudioObject audioObject, ActiveSound chainActive, int startIndex)
{
bool isRandom = audioObject.ContainerType == ContainerType.Random;
@@ -234,7 +234,7 @@ namespace OCES.Audio
limitRepetition);
// 配置并播放
if (!SetupSource(source, audioObject, pitch, volume,index))
if (!SetupSource(source, chainActive, index))
{
Debug.LogError($"音频文件未找到:{audioObject.Name[index]}");
yield break;
@@ -339,8 +339,9 @@ namespace OCES.Audio
return this.m_sfxGroup;
}
bool SetupSource(AudioSource source, AudioObject audioObject, float pitch, float volume, int clipIndex = 0)
bool SetupSource(AudioSource source, ActiveSound activeSound, int clipIndex = 0)
{
AudioObject audioObject = activeSound.AudioObject;
AudioClip clip = Resources.Load<AudioClip>($"Audios/{audioObject.Name[clipIndex]}"); // TODO 抽象同一资源加载接口
if (!clip)
{
@@ -352,8 +353,8 @@ namespace OCES.Audio
source.loop = audioObject.LoopCount < 0;
source.priority = audioObject.Priority;
source.outputAudioMixerGroup = GetMixerGroup(audioObject.MixingType);
source.pitch = pitch;
source.volume = volume;
source.pitch = activeSound.Pitch;
source.volume = activeSound.Volume;
return true;
}
@@ -393,10 +394,10 @@ namespace OCES.Audio
AudioObject = audioObject,
Pitch = pitch,
Volume = volume,
State = ActiveSoundState.Playing
State = ActiveSoundState.Playing,
};
if (!SetupSource(source, audioObject, pitch, volume, i))
if (!SetupSource(source, child, i))
{
this.m_pool.ReturnToPool(source.gameObject);
continue;
@@ -432,7 +433,7 @@ namespace OCES.Audio
int start = audioObject.ContainerType == ContainerType.Random ? -1 : 0;
active.Coroutine = StartCoroutine(
PlayContainerContinuous(sourceSingle, audioObject, active, start, pitch, volume)
PlayContainerContinuous(sourceSingle, audioObject, active, start)
);
return;
@@ -448,9 +449,9 @@ namespace OCES.Audio
_ => 0
};
if (!SetupSource(sourceSingle, audioObject, pitch, volume, index))
if (!SetupSource(sourceSingle, active, index))
{
m_pool.ReturnToPool(sourceSingle.gameObject);
this.m_pool.ReturnToPool(sourceSingle.gameObject);
return;
}