首页 > 其他分享 >音效管理器

音效管理器

时间:2023-07-23 11:44:07浏览次数:30  
标签:soundList 管理器 source 音效 bkMusic null public

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

public class MusicMgr : BaseManager<MusicMgr>
{
//唯一的背景音乐组件
private AudioSource bkMusic = null;
//音乐大小
private float bkValue = 1;

//音效依附对象
private GameObject soundObj = null;
//音效列表
private List<AudioSource> soundList = new List<AudioSource>();
//音效大小
private float soundValue = 1;

public MusicMgr()
{
MonoMgr.GetInstance().AddUpdateListener(Update);
}

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 PlayBkMusic(string name)
{
if(bkMusic == null)
{
GameObject obj = new GameObject();
obj.name = "BkMusic";
bkMusic = obj.AddComponent<AudioSource>();
}
//异步加载背景音乐 加载完成后 播放
ResMgr.GetInstance().LoadAsync<AudioClip>("Music/BK/" + name, (clip) =>
{
bkMusic.clip = clip;
bkMusic.loop = true;
bkMusic.volume = bkValue;
bkMusic.Play();
});

}

/// <summary>
/// 暂停背景音乐
/// </summary>
public void PauseBKMusic()
{
if (bkMusic == null)
return;
bkMusic.Pause();
}

/// <summary>
/// 停止背景音乐
/// </summary>
public void StopBKMusic()
{
if (bkMusic == null)
return;
bkMusic.Stop();
}

/// <summary>
/// 改变背景音乐 音量大小
/// </summary>
/// <param name="v"></param>
public void ChangeBKValue(float v)
{
bkValue = v;
if (bkMusic == null)
return;
bkMusic.volume = bkValue;
}

/// <summary>
/// 播放音效
/// </summary>
public void PlaySound(string name, bool isLoop, UnityAction<AudioSource> callBack = null)
{
if(soundObj == null)
{
soundObj = new GameObject();
soundObj.name = "Sound";
}
//当音效资源异步加载结束后 再添加一个音效
ResMgr.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="value"></param>
public void ChangeSoundValue( float value )
{
soundValue = value;
for (int i = 0; i < soundList.Count; ++i)
so*undList[i].volume = value;
}

/// <summary>
/// 停止音效
/// </summary>
public void StopSound(AudioSource source)
{
if( soundList.Contains(source) )
{
soundList.Remove(source);
source.Stop();
GameObject.Destroy(source);
}
}
}

标签:soundList,管理器,source,音效,bkMusic,null,public
From: https://www.cnblogs.com/wl-2619/p/17574825.html

相关文章

  • Visual Studio新建项目配置好opencv环境,下次打开这个项目后属性管理器显示未加载visua
    配置opencv环境,可参考这篇博客:(82条消息)opencv之visualstudio开发环境配置(属性管理器+环境变量一劳永逸方便开发的配置方式)_opencv官网下载_仙魁XAN的博客-CSDN博客如出现打开这个项目后属性管理器显示未加载visualC++项目,可参考如下方法:1.解决方法:文件→打开→项目/......
  • 解决seata与mybatis的saveBatch事物管理器冲突问题
    报错:org.springframework.beans.factory.NoSuchBeanDefinitionException:Noqualifyingbeanoftype'org.springframework.transaction.TransactionManager'  重写方法即可service层/***批量保存**@parambaseChapterList*@return......
  • 定额解释管理器
    自已写自己用的小程序《定额解释管理器》(点击下载)。主要针对定额解答和争议复函,用脑袋记忆是可以,就是要拿出文件作为依据的时候很难找到文件出来。功能:录入定额解答和争议复函的关键字,可以添加文件作为附件,通过搜索功能找到后点击显示内容,附件可以双击打开或者点右键另存为。......
  • python爬取之url管理器
    classUrlManager():#url管理器def__init__():#设置新老url数组,分别为未爬取和已爬取self.new_urls=set()self.old_urls=set()defadd_new_url(self,url):#添加单个urlifurlisNoneorlen(url)==0:return......
  • Scoop包管理器最新安装
    首先参照另一篇Scoop的使用文档:win10使用Scoop软件包管理器,支持版本切换#先设置PowerShell执行策略Set-ExecutionPolicy-ExecutionPolicyRemoteSigned-ScopeCurrentUser#下载安装程序irmget.scoop.sh-outfile'install.ps1'#查看安装程序的所有可配置参数.\ins......
  • 场景管理器
     usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Events;usingUnityEngine.SceneManagement;publicclassSceneMager:MonoBehaviour{publicvoidSceneLoad(stringname,UnityActionfun){//同步切换场......
  • dwm.exe 是 Windows 操作系统中的一个进程,它代表桌面窗口管理器 (Desktop Window Mana
    dwm.exe是Windows操作系统中的一个进程,它代表桌面窗口管理器(DesktopWindowManager)。桌面窗口管理器是Windows中负责处理图形渲染和用户界面效果的组件之一。具体来说,dwm.exe负责管理桌面环境的显示、窗口合成、窗口动画、透明效果等任务。它使用硬件加速技术来提供流......
  • 隐藏windows资源管理器中的收藏夹、库、家庭组
    打开windows7资源管理器(WindowsExplorer),左侧是一个导航窗格,包括:收藏夹,库,家庭组,计算机,网络。这些项目链接到文件夹,硬盘或者其他电脑系统。 但是,不是每一个Windows7用户都需要这些项目。没有直接选项可以隐藏它们,我们可以通过注册表编辑器来实现。 去掉家庭组,收藏夹或者库......
  • Proton 推出开源密码管理器,兼身份管理器
    Proton是由来自欧洲核研究组织(CERN)的科学家于2014年在瑞士日内瓦创立的一家公司,其最知名的应该就是电子邮件服务ProtonMail,主打端到端加密、安全和隐私保护。Proton由科学家领导,其中包括万维网的发明者TimBerners-Lee。该公司曾于今年4月份宣布推出一个新的......
  • Proton 推出开源密码管理器,兼身份管理器
    Proton是由来自欧洲核研究组织(CERN)的科学家于2014年在瑞士日内瓦创立的一家公司,其最知名的应该就是电子邮件服务ProtonMail,主打端到端加密、安全和隐私保护。Proton由科学家领导,其中包括万维网的发明者TimBerners-Lee。该公司曾于今年4月份宣布推出一个新的......