wangguan
2020-12-12 e68c8f3d57bde284ceb40752144c26bd1e4b2e98
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,16 @@
    WaterTAttack,//水攻击
    WoodTAttack,//木攻击
    LightningSkill,//电技能
    FireSkill//火技能
    FireSkill,//火技能
    FinalScore,//结算分数滚动效果
    BossWaterSkill,//气泡
    WaterTowerSkill,//冰淇淋技能
    WoodSkill,//玉米狙击子弹
    Upgrade,//合成
    Gold,//金币
    GuideOpenBox,//新手引导开宝箱
    OpenTowerPlace,//开启塔位
}
public class AudioSourceManager : MonoBehaviour
{
@@ -65,7 +75,7 @@
        return tmpAudioSource;
    }
    private AudioClip LoadAudioClip(string musicName)
    public AudioClip LoadAudioClip(string musicName)
    {
        if (clipDic.ContainsKey(musicName))
            return clipDic[musicName];
@@ -75,7 +85,6 @@
            clipDic.Add(musicName, au);
            return au;
        }
    }
    public void Play(AudioEnum en)
@@ -118,21 +127,45 @@
                Play("放下宝石", true);
                break;
            case AudioEnum.FireTAttack:
                Play("火攻击", true);
                Play("火攻击", true, 0.5f);
                break;
            case AudioEnum.WaterTAttack:
                Play("水攻击", true);
                Play("水攻击", true, 0.5f);
                break;
            case AudioEnum.WoodTAttack:
                Play("木攻击", true);
                Play("木攻击", true, 0.5f);
                break;
            case AudioEnum.LightningSkill:
                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;
            case AudioEnum.Gold:
                Play("金币", true);
                break;
            case AudioEnum.GuideOpenBox:
                Play("新手引导开宝箱", true);
                break;
            case AudioEnum.OpenTowerPlace:
                Play("开启塔位", true);
                break;
        }
    }
@@ -140,7 +173,7 @@
    Dictionary<string, AudioClip> clipDic;
    private void Play(string musicName, bool isOneShot)
    private void Play(string musicName, bool isOneShot, float volume = 1.0f)
    {
        AudioClip au = LoadAudioClip(musicName);
        AudioSource tmpAudioSource;
@@ -158,12 +191,73 @@
        else
        {
            tmpAudioSource = audioSourceList[0];
            tmpAudioSource.clip = null;
            tmpAudioSource.clip = au;
            tmpAudioSource.loop = true;
        }
        tmpAudioSource.Play();
        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>