添加struct管理AudioData

This commit is contained in:
Han
2025-03-07 17:52:50 +08:00
parent 186a9da66c
commit 63b6601fbe
6 changed files with 131 additions and 101 deletions

View File

@@ -1,7 +1,7 @@
using System.Collections;
using UnityEngine;
public class MusicPlayer
public class MusicPlayer : AbstractAudio
{
private AudioSourcePool audioSourcePool;
private AudioSource audioSource1;
@@ -16,30 +16,29 @@ public class MusicPlayer
/// <summary>
/// 播放背景音乐
/// </summary>
/// <param name="clip">音频</param>
/// <param name="volume">音量</param>
/// <param name="fadeDuration">自然过渡时间</param>
public void Play(AudioClip clip, float volume, float fadeDuration)
/// <param name="audioData">{[clip:音频], [volume:音量], [fadeDuration:自然过渡时间]}</param>
public override void Play(AudioData audioData)
{
if(audioSource1 == null)
audioData = AudioDataInitialize(audioData);
if (audioSource1 == null)
{
audioSource1 = audioSourcePool.GetAudioSource("Music");
audioSource1.clip = clip;
audioSource1.volume = volume;
audioSource1.clip = audioData.clip;
audioSource1.volume = audioData.volume;
currentAudioSource = audioSource1;
currentAudioSource.Play();
CoroutineHelper.StartCoroutine(FadeMusic(audioSource1, fadeDuration, audioSource2));
CoroutineHelper.StartCoroutine(FadeMusic(audioSource1, audioData.fadeDuration, audioSource2));
}
else
{
if (audioSource2 == null)
{
audioSource2 = audioSourcePool.GetAudioSource("Music");
audioSource2.clip = clip;
audioSource2.volume = volume;
audioSource2.clip = audioData.clip;
audioSource2.volume = audioData.volume;
currentAudioSource = audioSource2;
currentAudioSource.Play();
CoroutineHelper.StartCoroutine(FadeMusic(audioSource2, fadeDuration, audioSource1));
CoroutineHelper.StartCoroutine(FadeMusic(audioSource2, audioData.fadeDuration, audioSource1));
}
else
{
@@ -52,10 +51,11 @@ public class MusicPlayer
/// <summary>
/// 关闭背景音乐
/// </summary>
/// <param name="fadeDuration">关闭时的自然过渡时间</param>
public void Stop(float fadeDuration)
/// <param name="audioData">{[fadeDuration:自然过渡时间]}</param>
public override void Stop(AudioData audioData)
{
CoroutineHelper.StartCoroutine(FadeOutMusic(currentAudioSource, fadeDuration));
audioData = AudioDataInitialize(audioData);
CoroutineHelper.StartCoroutine(FadeOutMusic(currentAudioSource, audioData.fadeDuration));
}
/// <summary>