首页 > 其他分享 >Unity Audio System概要

Unity Audio System概要

时间:2024-02-17 15:35:56浏览次数:26  
标签:Group System Mixer Source Unity Audio 我们

Unity的AudioSystem给我们提供了一整套的游戏音频处理解决方案,接下来我们对Unity Audio System进行简单的讲解。首先让我们来了解一下Unity Audio System包含了哪些重要的组成部分。


Audio Clip:这个是Unity存放外部音频资源的容器,可以根据我们的需要将外部导入的音频资源进行粗处理。比如在LoadType选项中我们就可以选择加载进来的类型是压缩还是未压缩。关于更多LoadType和Compression Format的信息参考:【内存优化】Unity音频资源优化
image


Audio Source:顾名思义,音频源,就是拿来播放音频的组件,Audio Source用来在场景中播放Audio Clip。如果说Audio Clip是Asset类型的话,那么Audio Source就是组件,他可以挂载到Gameobject上。Audio Source所挂载到Gameobject的位置会影响到最后播放的效果,比如如果Audio Source的空间混合类型为3D那么其挂载的Gameobject在场景中的位置将会遵循显示生活中的近大远小,同时左右声道音量的大小也会受到影响,使其听起来具有空间感。
image
需要注意的是,Audio Source不一定要分配一个Audio Clip,在运行时动态分配Audio Clip也是可行的,同时Audio Source还提供了一些静态方法能够让我们很方便的播放Audio Clip。更多关于Audio Source的信息参考官方文档:Audio Source


Audio Listener:这个组件一般被挂载在摄像机上,这个组件就是间接或直接接受我们场景世界中的声音的组件,如果没有这个组件那么我们将“听不见”场景中的任何声音。
image
在Audio Source的Output选项中,如果没有选择任何的AudioMixerGroup,那么Audio Source播放的Audio Clip将直接给到Audio Listener。


上面我们介绍了三个最基本的部分,Audio Clip、Audio Source、Audio Listener,可以比作唱片、播放器、和听众,有了这三个部分我们就可以有最简单的游戏音效了。但是当我们的需求变得复杂和灵活了的时候,往往这三个最基本的部分是不能满足我们的需要了,比如我们想要声音能够根据环境来添加混响效果时,或者我们想要在不同的音乐之间丝滑切换,这个时候我们就需要Audio Mixer的介入了
Audio Mixer:Audio Mixer的作用就是对若干个音频进行分组管理和处理,在Audio Source的Output选项当中可以选择,这个Audio Source是归那个Audio Mixer Group管的,Audio Mixer有个单独的窗口可以在Window -> Audio -> Audio Mixer下打开。
image
Audio Mixer窗口大致可以分为左右两个部分,我们从左边的部分挨个介绍,首先是Mixers。

Mixers:就是混合器,点击加号我们就可以新建一个Audio Mixer。每一个Audio Mixer都可以有不同的组和设置不同的效果。

Snapshots:快照,怎么理解Snapshot快照呢,可以把Snapshot看做是一个便利贴,这个便利贴上记录了当前这个Mixer的设置的一些效果,当我们想要一种效果的时候,我们就按照这个便利贴即snapshot上记录的设置来播放声音,一个Mixer可以有很多个Snapshot即可以有很多种效果,比如玩家在陆地上和在水中的音效是不一样的,这个时候我们就可以通过在记录了陆地上音效设置的snapshot和记录了水下音效设置的snapshot之间切换来实现音效的切换。

Group:组,可以理解为是音源组,我们在Audio Source中的Output中选择的就是这个Group,具体点讲,是先选择属于那个Mixer,然后再是属于这个Mixer下的那个Group,当我们添加一个组的时候我们就可以看到,面板右边同时多出了一个控制器,这个多出的控制器就是当前这个新添加的Group的。
image
View:额,这个应该没什么大作用,就是拿来方便开发者分类的吧。

现在让我们来具体看看面板右边的部分,这个部分很直观的展示了当前Mixer中有哪些Group,Master是所有Group的总控制器,对master添加的效果会影响到所有的Group,针对每个单独的Group都可以点击右下角的Add添加Audio Effect,添加的effect会作用到所有输出到这个Group的Audio Source,也就是在output选项中选择了当前Mixer Group的Audio Source。当我们不想要某一个效果的影响时,Snapshot的作用就显现出来了,我们可以新建一个Snapshot,然后将这个Snapshot的Group的effect参数设置为需要的值,这样我们就可以通过在不同的Snapshot之间切换来达到切换不同效果的目的。

以上就是Audio Mixer的一个最粗浅的介绍。


Audio Reverb Zone:混响区域组件,顾名思义,这个组件的作用就是定义一片区域拥有的混响效果,当我们的Audio Listener处于这片区域时就会有对应的混响效果。
image
这片区域是一个球形区域,如果Audio Listener处于MinDistance中那么混响效果最强,如果处于MinDistance和MaxDistance之间,那么混响效果会根据距离进行衰减,在MaxDistance之外则不会有任何的混响效果。ReverbPreset提供了一些混响的预设,我们也可以自定义预设。


还有很多的滤波器组件,这些组件可以对音频进行波形的处理,这里不做展开介绍,详细信息见官方文档Audio Filters
关于如何在unity中构建一个灵活强大的Audio System,可以看这个视频如何使用Scriptable Object构建一个Audio System。
Audio System | Scriptable Object | 声音系统 | Unity开放项目

标签:Group,System,Mixer,Source,Unity,Audio,我们
From: https://www.cnblogs.com/HalfDog/p/18018027

相关文章

  • 【Unity】消息系统
    介绍封装的消息机制使用注册消息Reg(MessageTypemessageType,MessageDelHandlehandle);messageType :注册消息类型handle :消息传入时回调方法(该方法需拥有参数Message)注销消息UnReg(MessageTypemessageType,MessageDelHandlehandle);messageType :注销消息类型......
  • Unity手机游戏性能优化系列:针对CPU端的性能调优
    做手机游戏开发的时,经常会遇到手机游戏的性能问题,手机游戏的性能问题可能有很多的方面,今天我们从CPU调优的角度来給大家介绍一下常用的CPU调优的一些经验和手段。这些经验和手段都有可能随着时间与环境的变化改变而改变,具体还是要以实际的为准,先定位性能问题,再上具体的手段。接下......
  • Unity资源管理系列:Unity 框架如何做好资源管理
    Unity资源管理需求分析作为架构师,在开始动手之前,先分析清楚需求,你才能设计出合理的方案,我们来分析一下Unity资源管理都有哪些需求,把需求想清楚了,设计是自然而然的事情。Unity资源管理主要需求:1:为开发与正式发布提供资源的加载/卸载;2:方便远程更新资源。3:带资源与不带资源......
  • Unity 类胡闹厨房游戏 KitchenChaos 阶段1整理记录
    原教程地址:https://youtu.be/AmGSEH7QcDg部分代码:usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassPlayerAnimator:MonoBehaviour{privateconststringIS_WALKING="IsWalking";[SerializeField]priv......
  • 【记录】 unity插件 Addressables
    介绍Addressables是Unity官方推出的用于资源热更的系统,可在PackageManager里面下载。安装可在PackageManager里面下载、安装即可使用配置Addressables配置使用基础Addressables使用远程分发Addressables远程分发......
  • dremio SystemStoragePluginInitializer 简单说明.
    以前在关于ManagedStoragePlugin部分,简单说明了下SystemStoragePluginInitializer,今天再明确说明下SystemStoragePluginInitializer的特点继承自Initializer接口,可以实现一些轻量级服务的启动SystemStoragePluginInitializer的启动是通过InitializerRegistry类实现的,Initia......
  • IfcBuildingSystemTypeEnum
    IfcBuildingSystemTypeEnum 类型定义此枚举标识不同类型的建筑系统。 IFC4中的新枚举。 EnumerationdefinitionConstantDescriptionFENESTRATIONSystemofdoors,windows,andotherfillingsinopeninginabuildingenvelopthataredesignedtopermitth......
  • 【XV6】 system calls
    代码:https://github.com/JasenChao/xv6-labs.git使用GDB调试安装risc-v的GDB先安装依赖:sudoapt-getinstalllibncurses5-devpython2python2-devtexinfolibreadline-dev再下载源码,可以从清华镜像源下载:wgethttps://mirrors.tuna.tsinghua.edu.cn/gnu/gdb/gdb-13.2.ta......
  • 【XV6】 file system
    代码:https://github.com/JasenChao/xv6-labs.git支持大文件XV6目前只支持268个blocks大小的文件,一个block(BSIZE)为1024,文件块inode包含12个一级地址和1个二级地址,二级地址指向另一个block,其中存放了256个一级地址,因此一共是268个。题目要求支持大文件(65803个blocks),提示通过三级......
  • pytorch深度学习入门(8)之-Torchaudio使用Tacotron2 文本转语音
    https://blog.csdn.net/ajunbin859/article/details/134380417?ops_request_misc=&request_id=&biz_id=102&utm_term=pytorch%E7%89%88%E6%9C%AC%E7%9A%84tacotron%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B&utm_medium=distribute.pc_search_r......