Unity进阶第五章-声音管理器

(1)创建Managers和AudioManager两个脚本
在这里插入图片描述
(2)AudioManager:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioManager : ManageBase<AudioManager>
{
    
    
    //环境音
    private AudioSource envPlayer;
    //音效
    private AudioSource sePlayer;
    //音乐
    private AudioSource Player;
    void Start()
    {
    
    
        //音乐
        Player = gameObject.AddComponent<AudioSource>();
        Player.loop = true;
        //音效
        sePlayer = gameObject.AddComponent<AudioSource>();
        //环境音
        envPlayer = gameObject.AddComponent<AudioSource>();
        //切换场景禁止销毁
        GameObject.DontDestroyOnLoad(gameObject);
    }
    //播放音乐 通过文件名来播放AudioClip
    public void PlayMusic(string name, float volume = 1)
    {
    
    
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlayMusic(clip, volume);
    }
    public void PlayMusic(AudioClip clip, float volume = 1)
    {
    
    
        //声音
        Player.volume = volume;
        //声音判断
        if (Player.isPlaying)
        {
    
    
            Player.Stop();
        }
        Player.clip = clip;
        Player.Play();
    }
    //停止播放
    public void StopMusic()
    {
    
    
        Player.Stop();
    }
    //改变音乐声音
    public void ChangeMusicVolume(float volume)
    {
    
    
        Player.volume = volume;
    }
    //播放环境音
    public void PlayEnvMusic(string name, float volume = 1)
    {
    
    
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlayEnvMusic(clip, volume);
    }
    public void PlayEnvMusic(AudioClip clip, float volume = 1)
    {
    
    
        if (envPlayer.isPlaying)
        {
    
    
            envPlayer.Stop();
        }
        envPlayer.clip = clip;
        envPlayer.volume = volume;
        envPlayer.Play();
    }
    //停止环境音
    public void StopEnvMusic()
    {
    
    
        envPlayer.Stop();
    }
    //播放音效
    public void PlaySeSound(string name,float volume = 1)
    {
    
    
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlaySeSound(clip, volume); 
    }
    public void PlaySeSound(AudioClip clip,float volume = 1)
    {
    
    
        sePlayer.PlayOneShot(clip,volume);
    }
    //在某个物体上面播放音效
    public void PlaySeSoundOnObject(string name,GameObject go,float volume=1)
    {
    
    
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlaySeSoundOnObject(clip, go, volume);
    }
    public void PlaySeSoundOnObject(AudioClip clip,GameObject go,float volume=1)
    {
    
    
        AudioSource player = go.GetComponent<AudioSource>();
        if (player == null)
        {
    
    
            player = go.AddComponent<AudioSource>();
        }
        player.volume = volume;
        player.PlayOneShot(clip);                                   
    }
    
}

(3)Managers:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Managers 
{
    
    
    public static AudioManager m_Audio = AudioManager.Instance;

}

猜你喜欢

转载自blog.csdn.net/weixin_43853077/article/details/125937871