【m】 修改淡入淡出

This commit is contained in:
zhangzheng
2025-12-31 18:10:58 +08:00
parent 189c5016be
commit 2d23b1e12f
7 changed files with 91 additions and 28 deletions

View File

@@ -84,9 +84,10 @@ namespace Stary.Evo.AudioCore
UniTask FadeInMusic(AudioSource source, float fadeDuration);
UniTask FadeOutMusic(AudioSource source, float fadeDuration);
void Stop();
void StopAll();
AudioSource GetAudioSource();
}
public abstract class AbstractAudio : IAudio
@@ -99,6 +100,13 @@ namespace Stary.Evo.AudioCore
public abstract UniTask PlayAsync(AudioData audioData);
public abstract void StopAll();
public abstract AudioSource GetAudioSource();
public virtual UniTask FadeOutVoice(float fadeDuration)
{
return UniTask.CompletedTask;
}
public virtual void Stop()
@@ -114,6 +122,7 @@ namespace Stary.Evo.AudioCore
AudioSourcePool.Creation();
}
}
/// <summary>
/// 音频数据初始化
/// </summary>
@@ -126,11 +135,15 @@ namespace Stary.Evo.AudioCore
audioData.volume = 1f;
}
if (audioData.fadeDuration == 0)
if (!GetType().Name.Contains("Voice"))
{
audioData.fadeDuration = 1f;
if (audioData.fadeDuration == 0)
{
audioData.fadeDuration = 1f;
}
}
return audioData;
}
@@ -181,9 +194,10 @@ namespace Stary.Evo.AudioCore
/// <param name="delay"></param>
/// <param name="onComplete"></param>
/// <returns></returns>
public async UniTask PlayAudioAWait(AudioSourceToken audioSourceToken, float delay, System.Action onComplete)
public async UniTask PlayAudioAWait(AudioSourceToken audioSourceToken, float delay,
System.Action onComplete, float fadeDuration = 1f)
{
await PlayAudioAWait(audioSourceToken, delay);
await PlayAudioAWait(audioSourceToken, delay, fadeDuration);
onComplete?.Invoke();
}
@@ -194,14 +208,14 @@ namespace Stary.Evo.AudioCore
/// <param name="delay"></param>
/// <param name="onComplete"></param>
/// <returns></returns>
public async UniTask PlayAudioAWait(AudioSourceToken audioSourceToken, float delay)
public async UniTask PlayAudioAWait(AudioSourceToken audioSourceToken, float delay, float fadeDuration = 1f)
{
Debug.Log($"PlayAudioAWait:{GetType().Name}");
if (!GetType().Name.Contains("Voice"))
if (GetType().Name.Contains("Voice"))
{
await UniTask.Delay(TimeSpan.FromSeconds(audioSourceToken.source.clip.length - 2f),
await UniTask.Delay(TimeSpan.FromSeconds(audioSourceToken.source.clip.length - fadeDuration),
cancellationToken: audioSourceToken.cancellationToken.Token);
await FadeOutMusic(audioSourceToken.source, 2f);
await FadeOutMusic(audioSourceToken.source, fadeDuration);
await UniTask.Delay(TimeSpan.FromSeconds(delay),
cancellationToken: audioSourceToken.cancellationToken.Token);
}