项目实训(八)使用Audio Mixer控制音量问题


前言

使用Audio Mixer分别控制主音量、背景音乐和其他音效。在游戏中,通常我们需要控制整个游戏的主音量(全局音量),并且单独控制背景音乐和其他音效(攻击、爆炸之类)的音量,这时我们可以用Audio Mixer来解决。


1.导入资源

将外部资源导入在audio文件夹下
在这里插入图片描述

2.创建音量调节面板UI

创建了2个滑动条分别控制音乐和音效,并且将滑动条的默认值设为1:

在这里插入图片描述

3.创建声音播放源

背景音乐

创建一个空物体(GameObject)来作为背景音乐的载体,改名为Background Music,添加一个Audio Source组件(要使用Audio Mixer控制音量必须要用Audio Source来播放音频),将背景音乐音频文件拖到AudioClip中,勾选Loop让背景音乐循环播放:

在这里插入图片描述
AudioSource有三个播放方法
Play()成员方法。
PlayOneShot(参数)成员方法。
PlayClipAtPoint(clip,position)静态方法。
在这里插入图片描述

4.创建Audio Mixer

在Audio文件夹下创建Mixers文件夹,右键点击Mixers文件夹 --> Creat --> Audio Mixer,创建后改名为MasterMixer,我们用这个Audio Mixer来控制全局音量;双击打开我们创建的MasterMixer,将打开的窗口拉出来方便我们查看:
使用Audio Mixer控制全局音量,首先在Groups下添加成员:Music和SoundEffect(游戏音效),把相对应的音乐拖到AudioClip之后,将Music和SoundEffect拖到Audio Source组件下的Output中
通过MasterMixer的Music来控制背景音乐音量,通过SoundEffect来控制游戏音量

在这里插入图片描述

4、暴露参数
我们需要先将Master、Music和SoundEffect的参数暴露(Expose)出来,这样我们才可以通过代码去控制音量:

  1. 首先暴露出Master的参数:
    在这里插入图片描述
  2. 然后点击Exposed Parameters,选择我们刚暴露出来的Master的参数,按下F2更改名字为MasterVolume:
    在这里插入图片描述
  3. 对Music和SoundEffect进行同样的操作(1,2步操作),然后我们就有3个暴露出来的参数:

在这里插入图片描述

5、控制音量

现在我们有了参数就可以让我们控制音量了,那么接下来就进行音量的控制:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
 
public class AudioManager : MonoBehaviour
{
 
    public AudioMixer audioMixer;    // 进行控制的Mixer变量
 
    public void SetMasterVolume(float volume)    // 控制主音量的函数
    {
        audioMixer.SetFloat("MasterVolume", volume);
        // MasterVolume为我们暴露出来的Master的参数
    }
 
    public void SetMusicVolume(float volume)    // 控制背景音乐音量的函数
    {
        audioMixer.SetFloat("MusicVolume", volume);
        // MusicVolume为我们暴露出来的Music的参数
    }
 
    public void SetSoundEffectVolume(float volume)    // 控制音效音量的函数
    {
        audioMixer.SetFloat("SoundEffectVolume", volume);
        // SoundEffectVolume为我们暴露出来的SoundEffect的参数
    }
}

6. 设置最大最小值

修改滑动条的最小值和最大值,设置滑动条的最大值和最小值进行解决,确保声音的大小合适。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值