(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;
}