|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class AudioManager : MonoBehaviour
- {
- public static AudioManager instance;
- public AudioClip bgm;//游戏背景音乐
- public AudioClip se1;//游戏音效1
- public AudioClip se2;//游戏音效2
- public AudioClip se3;//游戏音效3
- public int audioSourceCount=3;//音轨的数量
- public List<AudioSource> audios = new List<AudioSource>();//将AudioSource组件声明为集合
- // Start is called before the first frame update
- void Start()
- {
- //将默认audioSourceCoun数量的Audio Source组件添加到脚本所挂载的对象上
- for (int i = 0; i < audioSourceCount; i++)
- {
- //AddComponent<AudioSource>();方法会在脚本所挂载的对象上添加
- //一个AudioSource组件,并且会返回所添加的AudioSource组件作为返回值
- AudioSource audio =this.gameObject.AddComponent<AudioSource>();
- audios.Add(audio);
- }
- instance = this;
- }
- //在Resource内动态加载
- public void PlayByLoadResources(int index,bool isLoop,string path)
- {
- var audioClip = Resources.Load<AudioClip>(path);
- audios[index].clip = audioClip;
- audios[index].loop = isLoop;
- audios[index].Play();
- }
- //在内存中加载
- public void PlayByMemory(int index, string name, bool isLoop)
- {
- var clip = GetAudioClip(name);
- if (clip != null)
- {
- audios[index].clip = clip;
- audios[index].loop = isLoop;
- audios[index].Play();
- }
- else
- {
- Debug.Log("AudioManager类中的PlayByMemory中传入的名称没有找到对应的" +
- "bgm,se1,se2,se3的字符串名称,造成" +
- "clip为空");
- }
- }
- //停止播放
- public void Stop(int index)
- {
- audios[index].Stop();
- }
- AudioClip GetAudioClip(string name)
- {
- switch (name)
- {
- case "bgm":
- return bgm;
- case "se1":
- return se1;
- case "se2":
- return se2;
- case "se3":
- return se3;
- }
- return null;
- }
-
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|