From 760d6e5db82c457371d02a7f3d1e55bb7e78bbf5 Mon Sep 17 00:00:00 2001
From: Han <1985708279@qq.com>
Date: Tue, 29 Apr 2025 11:02:18 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90m=E3=80=91=E9=9F=B3=E4=B9=90=E6=92=AD?=
=?UTF-8?q?=E6=94=BE=E5=92=8C=E9=9F=B3=E6=95=88=E6=89=93=E6=96=AD=E9=80=A0?=
=?UTF-8?q?=E6=88=90=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../04.AudioCore/RunTime/Base/MusicPlayer.cs | 44 +++++++++++++++----
Assets/04.AudioCore/RunTime/Base/SFXPlayer.cs | 7 +++
Assets/04.AudioCore/package.json | 2 +-
3 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/Assets/04.AudioCore/RunTime/Base/MusicPlayer.cs b/Assets/04.AudioCore/RunTime/Base/MusicPlayer.cs
index bdb1b00..742fe60 100644
--- a/Assets/04.AudioCore/RunTime/Base/MusicPlayer.cs
+++ b/Assets/04.AudioCore/RunTime/Base/MusicPlayer.cs
@@ -29,7 +29,7 @@ namespace Stary.Evo.AudioCore
audioSource1.volume = audioData.volume;
currentAudioSource = audioSource1;
currentAudioSource.Play();
- CoroutineHelper.StartCoroutine(FadeMusic(audioSource1, audioData.fadeDuration, audioSource2));
+ FadeMusic(audioSource1, audioData.fadeDuration, audioSource2);
}
else
{
@@ -40,7 +40,7 @@ namespace Stary.Evo.AudioCore
audioSource2.volume = audioData.volume;
currentAudioSource = audioSource2;
currentAudioSource.Play();
- CoroutineHelper.StartCoroutine(FadeMusic(audioSource2, audioData.fadeDuration, audioSource1));
+ FadeMusic(audioSource2, audioData.fadeDuration, audioSource1);
}
else
{
@@ -56,8 +56,9 @@ namespace Stary.Evo.AudioCore
/// {[fadeDuration:自然过渡时间]}
public override void Stop(AudioData audioData)
{
- audioData = AudioDataInitialize(audioData);
- CoroutineHelper.StartCoroutine(FadeOutMusic(currentAudioSource, audioData.fadeDuration));
+ //audioData = AudioDataInitialize(audioData);
+ //CoroutineHelper.StartCoroutine(FadeOutMusic(currentAudioSource, audioData.fadeDuration));
+ FadeAllMusic();
}
///
@@ -67,13 +68,13 @@ namespace Stary.Evo.AudioCore
/// 变化时间
/// 停止的音频
///
- private IEnumerator FadeMusic(AudioSource source1, float fadeDuration, AudioSource source2 = null)
+ private void FadeMusic(AudioSource source1, float fadeDuration, AudioSource source2 = null)
{
- yield return FadeInMusic(source1, fadeDuration);
+ CoroutineHelper.StartCoroutine(FadeInMusic(source1, fadeDuration));
if (source2 != null)
{
- yield return FadeOutMusic(source2, fadeDuration);
+ CoroutineHelper.StartCoroutine(FadeOutMusic(source2, fadeDuration));
}
}
@@ -86,6 +87,7 @@ namespace Stary.Evo.AudioCore
///
private IEnumerator FadeOutMusic(AudioSource source, float fadeDuration)
{
+ if (source == null) yield break;
float startVolume = source.volume;
while (source.volume > 0)
@@ -95,16 +97,42 @@ namespace Stary.Evo.AudioCore
}
source.Stop();
+ if (audioSource1 == source)
+ {
+ audioSource1 = null;
+ }
+ else if (audioSource2 == source)
+ {
+ audioSource2 = null;
+ }
audioSourcePool.ReturnAudioSource("Music", source.gameObject);
- if (currentAudioSource == audioSource1)
+ /*if (currentAudioSource == audioSource1)
{
audioSource2 = null;
}
else if (currentAudioSource == audioSource2)
{
audioSource1 = null;
+ }*/
+ }
+
+ private void FadeAllMusic()
+ {
+ if (currentAudioSource != null && currentAudioSource.isPlaying)
+ {
+ if (currentAudioSource == audioSource1)
+ {
+ audioSource1 = null;
+ }
+ else
+ {
+ audioSource2 = null;
+ }
+ audioSourcePool.ReturnAudioSource("Music", currentAudioSource.gameObject);
+ currentAudioSource = null;
}
+
}
///
diff --git a/Assets/04.AudioCore/RunTime/Base/SFXPlayer.cs b/Assets/04.AudioCore/RunTime/Base/SFXPlayer.cs
index 5befd50..f816d4f 100644
--- a/Assets/04.AudioCore/RunTime/Base/SFXPlayer.cs
+++ b/Assets/04.AudioCore/RunTime/Base/SFXPlayer.cs
@@ -22,6 +22,12 @@ namespace Stary.Evo.AudioCore
public override void Play(AudioData audioData)
{
audioData = AudioDataInitialize(audioData);
+ if (audioData.clip == null)
+ {
+ Debug.LogError("播放的音效音频片段为空");
+ return;
+ }
+
AudioSource source = audioSourcePool.GetAudioSource("SFX");
if (source == null) return;
@@ -42,6 +48,7 @@ namespace Stary.Evo.AudioCore
/// {[无可使用变量]}
public override void Stop(AudioData audioData)
{
+ if (activeSources == null) return;
foreach (var source in activeSources)
{
if (source.isPlaying)
diff --git a/Assets/04.AudioCore/package.json b/Assets/04.AudioCore/package.json
index d54900c..5bb8036 100644
--- a/Assets/04.AudioCore/package.json
+++ b/Assets/04.AudioCore/package.json
@@ -1,6 +1,6 @@
{
"name": "com.staryevo.audiocore",
- "version": "1.0.7",
+ "version": "1.0.8",
"displayName": "04.AudioCore",
"description": "音频播放工具",
"unity": "2021.3",