Unity中的声音(声音开关+动画事件播放声音+控制声音大小UI)


        声音组件(一个scene中只能有一个Audio Listener,位于Camera)
        Audio Source 理解为 “嘴巴”
Unity中支持的音频格式
在这里插入图片描述

声音开关

效果:点击背景音乐暂停,再点击音乐继续。
步骤
(1)创建UI—Toggle(切换)
在这里插入图片描述
在这里插入图片描述
与图片上对应:
      Label 文字
      Background 白色框框
      Checkmark 黑色的勾
(可以根据自己的UI样式调整Background和Checkmark的Sprite,实现自己的效果)
比如我自己使用:
Background
在这里插入图片描述
Checkmark
在这里插入图片描述
这样可以实现(颜色不会变哦,图片是录屏的原因)
在这里插入图片描述
(2)在Toggle组件上添加Audio Source组件,在Audio Clip中拖入要加的音乐片段,其他属性开自己要求。
在这里插入图片描述
(3)创建一个空对象,命名为music,创建一个脚本,命名MusicToggle挂载上面
代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MusicToggle : MonoBehaviour
{
    public  Toggle toggelMusic;
    public AudioSource audio;

    public void ToggleMusicThing()
    {
        if (toggelMusic.isOn == true)
        {
            audio.mute =false;
        }
        else if (toggelMusic.isOn == false)
        {
            audio.mute=true;
        }
    }
}

将Toggle拖到脚本中,两个都是,因为Audio Source组件也在Toggle里面
在这里插入图片描述
(4)回到Toggle中
在这里插入图片描述
先点击“+”号,将music拖到Runtime下方的框中
在这里插入图片描述
然后点击Runtime右边的框,找到函数
在这里插入图片描述
这样就可以了。

动画事件播放声音

比较适合在Unity中制作动画时使用
(1)先制作好动画,在挂载动画的物体上挂载组件Audio Source。
注意:不要勾选“在唤醒时播放”
在这里插入图片描述
(2)创建一个脚本,挂载到该物体上
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PlayWater : MonoBehaviour
{
    public void Playwater()
    {
       // Debug.Log("okkkkkkkk");
        AudioSource audio = GetComponent<AudioSource>();
        audio.Play();
    }
}

(3)打开动画片段,选择动画上要添加事件的帧数
点击“添加事件”
在这里插入图片描述
(3)点击刚添加的事件,在“检查器”窗口点击如下图,选择上面写的函数
在这里插入图片描述
这样就实现了在动画事件播放声音。

控制声音大小Slider

(1)创建一个空物体命名gameVoice,加上AudioSource组件,将声音Clip拖进去,打开Play On Wake和Loop,将Volume设置为1。
在这里插入图片描述
(2)创建一个Slider,命名为voiceSlider,将属性value设置为1
在这里插入图片描述
(3)创建一个脚本BackMusicControl,将脚本挂到gameVoice。
代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BackMusicControl : MonoBehaviour
{
    public Slider slider;
    public AudioSource backMusic;

    public void ControlMusic()
    {
        backMusic.volume = slider.value;
    }
}

将voiceSlider和gameVoice挂到上面
在这里插入图片描述
(4)在voiceSlider中点击添加事件,将gameVoice弱到坐下放格子,在右边格子点击,找到刚才写的脚本和其中的函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如有问题,欢迎留言 ヽ(✿゚▽゚)ノ