weixudong
2020-12-09 17c6e8b6f2aee4ed9a15c886f54a73f0cb61b125
Assets/Scripts/Music/AudioSourceManager.cs
@@ -1,4 +1,5 @@
using System.Collections;
using System.Security.Cryptography.X509Certificates;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -19,7 +20,13 @@
    WaterTAttack,//水攻击
    WoodTAttack,//木攻击
    LightningSkill,//电技能
    FireSkill//火技能
    FireSkill,//火技能
    FinalScore,//结算分数滚动效果
    BossWaterSkill,//气泡
    WaterTowerSkill,//冰淇淋技能
    WoodSkill,//玉米狙击子弹
    Upgrade,//合成
}
public class AudioSourceManager : MonoBehaviour
{
@@ -65,7 +72,7 @@
        return tmpAudioSource;
    }
    private AudioClip LoadAudioClip(string musicName)
    public AudioClip LoadAudioClip(string musicName)
    {
        if (clipDic.ContainsKey(musicName))
            return clipDic[musicName];
@@ -75,7 +82,6 @@
            clipDic.Add(musicName, au);
            return au;
        }
    }
    public void Play(AudioEnum en)
@@ -130,10 +136,24 @@
                Play("电技能", true);
                break;
            case AudioEnum.FireSkill:
                Play("火技能", true);
                Play("火焰喷射", true);
                break;
            case AudioEnum.FinalScore:
                Play("结算分数", true);
                break;
            case AudioEnum.BossWaterSkill:
                //Play("气泡", true);
                PlayBossWaterSkill("气泡");
                break;
            case AudioEnum.WaterTowerSkill:
                Play("冰淇淋技能", true);
                break;
            case AudioEnum.WoodSkill:
                Play("玉米狙击子弹", true);
                break;
            case AudioEnum.Upgrade:
                Play("合成", true);
                break;
        }
    }
@@ -166,6 +186,63 @@
        tmpAudioSource.volume = volume;
    }
    AudioSource bossWaterSkillAS;
    /// <summary>
    /// BOSS气泡技能 38秒钟,所以不用循环播放
    /// </summary>
    /// <param name="musicName"></param>
    /// <param name="volume"></param>
    private void PlayBossWaterSkill(string musicName, float volume = 1.0f)
    {
        Debug.Log("BOSS气泡技能 38秒钟,所以不用循环播放");
        AudioClip au = LoadAudioClip(musicName);
        bossWaterSkillAS = GetAudioSource();
        bossWaterSkillAS.clip = au;
        bossWaterSkillAS.loop = false;
        bossWaterSkillAS.Play();
        bossWaterSkillAS.volume = volume;
    }
    /// <summary>
    /// BOSS气泡技能结束
    /// </summary>
    public void StopBossWaterSkill()
    {
        Debug.Log("BOSS气泡技能结束");
        if (bossWaterSkillAS != null)
        {
            bossWaterSkillAS.Stop();
            bossWaterSkillAS.clip = null;
            if (audioSourceList.Count > 5)
            {
                audioSourceList.Remove(bossWaterSkillAS);
                Destroy(bossWaterSkillAS);
                bossWaterSkillAS = null;
            }
        }
    }
    /// <summary>
    /// 暂停背景音乐
    /// </summary>
    public void StopBGAudio()
    {
        if (!audioSourceList[0].isPlaying)
            audioSourceList[0].Stop();
    }
    /// <summary>
    /// 继续背景音乐
    /// </summary>
    public void RestartBGAudio()
    {
        if (!audioSourceList[0].isPlaying)
            audioSourceList[0].Play();
    }
    /// <summary>
    /// 销毁音效
    /// </summary>