UFL6-1——音效管理模块音乐部分实现
UFL6-1——音效管理模块音乐部分实现
实现音效管理模块 音乐 相关内容
-
声明
MusicManager
,继承 不继承MonoBehaviour的单例模式基类1
2
3
4
5
6
7/// <summary>
/// 音乐音效管理器
/// </summary>
public class MusicManager : BaseManager<MusicManager>
{
private MusicManager() { }
} -
播放背景音乐
在场景上添加一个唯一的不可销毁的对象,该对象挂载一个播放背景音乐的音效源,
音效管理模块需要关联这个音效源,通过这个音效源来控制背景音乐的播放1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22//背景音乐播放组件
private AudioSource bgmSource = null;
public void PlayBGM(string name)
{
//动态创建播放背景音乐的组件,并且不会因为过场景而移除
//保证背景音乐在过场景时也能播放
if (bgmSource == null)
{
GameObject obj = new GameObject("BGM");
GameObject.DontDestroyOnLoad(obj);
bgmSource = obj.AddComponent<AudioSource>();
}
//根据传入的背景音乐名字,来播放背景音乐
ABResManager.Instance.LoadResAsync<AudioClip>("music", name, (clip) =>
{
bgmSource.clip = clip;
bgmSource.loop = true;
bgmSource.volume = 0.1f; //TODO.. 临时设置
bgmSource.Play();
});
} -
停止背景音乐
1
2
3
4
5
6public void StopBGM()
{
if (bgmSource == null)
return;
bgmSource.Stop();
} -
暂停背景音乐
1
2
3
4
5
6public void PauseBGM()
{
if (bgmSource == null)
return;
bgmSource.Pause();
} -
设置背景音乐大小
不论背景音乐音效源是否存在,都记录这个设置的值到
bgmVolume
,当背景音乐正在播放,或者背景音乐开始播放,就使用bgmVolume
调整音量1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34//背景音乐播放组件
private AudioSource bgmSource = null;
//背景音乐大小
private float bgmVolume = 0.1f;
private MusicManager() { }
public void PlayBGM(string name)
{
//动态创建播放背景音乐的组件,并且不会因为过场景而移除
//保证背景音乐在过场景时也能播放
if (bgmSource == null)
{
GameObject obj = new GameObject("BGM");
GameObject.DontDestroyOnLoad(obj);
bgmSource = obj.AddComponent<AudioSource>();
}
//根据传入的背景音乐名字,来播放背景音乐
ABResManager.Instance.LoadResAsync<AudioClip>("music", name, (clip) =>
{
bgmSource.clip = clip;
bgmSource.loop = true;
bgmSource.volume = bgmVolume;
bgmSource.Play();
});
}
public void ChangeBGMVolume(float value)
{
bgmVolume = value;
if (bgmSource == null)
return;
bgmSource.volume = bgmVolume;
}
使用示例
准备两个音乐,放到Assets/Editor/music
文件夹下,以便于读取和打包
1 | private float v = 0.1f; |
通过点击屏幕上的绘制的按钮和滑动条,监听音乐变化
具体代码
1 | using System.Collections; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!