hand
_1_7_136
4
返回栏目
1k
0.2k
0.5k
0.1k
0k
0.2k
0k
0.7k
0k
0k
0.4k
0.1k
4k
0.2k
0.1k
2k
0.2k
0.2k
0k
0k
0.5k
0k
0.9k
0.1k
1k
0.9k
2k
1k
2k
0.9k
1k
0k
1k
0k
1k
1k
1k
1k
0k
1k
1k
1k
0k
3k
1k
0k
0.3k
1k
0.3k
0.9k
0k
8k
9k
6k
2k
1k
2k
1k
1k
2k
0.6k
1k
0.6k
1k
0.5k
0.2k
2k
2k
2k
1k
2k
0k
0.8k
0.8k
1k
0k
0k
0k
0k
0k
0k
0k
0k
0.3k
0.4k
0.8k
0.3k
5k
1k
3k
7k
6k
3k
3k
1k
0.2k
2k
3k
2k
0.4k
0.5k
3k
2k
7k
3k
4k
2k
1k
6k
6k
1k
1k
0.9k
0.2k
0.3k
0.9k
1k
0k
0.8k
2k
0k
0.4k
0.1k
1k
0.9k
0.2k
1k
1k
0.5k
0k
0k
0.4k
4k
0.4k
2k
3k
1k
1k
1k
3k
5k
0k
1k
2k
0.5k
0k
1k
0k
1k
0.5k
0.8k
返回Unity - 游戏引擎栏目
作者:
贺及楼
成为作者
更新日期:2023-09-17 11:01:19
MusicManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class MusicManager : BaseManager<MusicManager>
{
//背景音乐
private AudioSource bkMusic = null;
private float bkValue = 1;
//音效
private GameObject soundObj = null;
private List<AudioSource> soundList = new List<AudioSource>();
private float soundValue = 1;
public MusicManager()
{
MonoManager.GetInstance().AddUpdateListener(Update);// 循环删除播放完的音效
}
/// <summary>
/// 循环删除播放完的音效
/// </summary>
private void Update()
{
for(int i = soundList.Count - 1; i >= 0; --i)
{
if (!soundList[i].isPlaying)
{
GameObject.Destroy(soundList[i]);
soundList.RemoveAt(i);
}
}
}
/// <summary>
/// 背景音乐 开始
/// </summary>
/// <param name="name"></param>
public void PlayBackMusic(string name)
{
if (bkMusic == null)
{
GameObject obj = new GameObject();
obj.name = "bkMusic";
bkMusic = obj.AddComponent<AudioSource>();
}
ResourcesManager.GetInstance().LoadAsync<AudioClip>("Music/BackMusic/" + name, (clip) => {
bkMusic.clip = clip;
bkMusic.loop = true;//循环
bkMusic.volume = bkValue;
bkMusic.Play();
});
}
/// <summary>
/// 背景音乐 调整
/// </summary>
/// <param name="name"></param>
public void ChangeBackMusic(float v)
{
bkValue = v;
if (bkMusic == null)
return;
bkMusic.volume = bkValue;
}
/// <summary>
/// 背景音乐 暂停
/// </summary>
/// <param name="name"></param>
public void PauseBackMusic(string name)
{
if (bkMusic == null)
return;
bkMusic.Pause();
}
/// <summary>
/// 背景音乐 停止
/// </summary>
/// <param name="name"></param>
public void StopBackMusic(string name)
{
if (bkMusic == null)
return;
bkMusic.Stop();
}
/// <summary>
/// 音效 开始
/// </summary>
/// <param name="name"></param>
/// <param name="isLoop"></param>
/// <param name="callBack"></param>
public void PlaySound(string name,bool isLoop,UnityAction<AudioSource> callBack = null)
{
if (soundObj == null)
{
GameObject obj = new GameObject();
obj.name = "soundObj";
}
//加载资源,加载、加Componen、循环、音量、播放、加列表
ResourcesManager.GetInstance().LoadAsync<AudioClip>("Music/Sound/" + name, (clip) => {
AudioSource source = soundObj.AddComponent<AudioSource>();
source.clip = clip;
source.loop = isLoop;
source.volume = soundValue;
source.Play();
soundList.Add(source);
if (callBack != null)
callBack(source);
});
}
/// <summary>
/// 音效 调整音量
/// </summary>
/// <param name="v"></param>
public void ChangeSound(float v)
{
soundValue = v;
for(int i=0; i<soundList.Count; ++i)
soundList[i].volume = soundValue;
}
/// <summary>
/// 音效 停止
/// </summary>
/// <param name="source"></param>
public void StopSound(AudioSource source)
{
if (soundList.Contains(source))
{
soundList.Remove(source);
source.Stop();
GameObject.Destroy(source);
}
}
}
Unity - 游戏引擎
整章节共151节
快分享给你的小伙伴吧 ~