Unity如何制作声音控制条(控制音量大小)

news2024/11/19 19:22:07

一:UGUI制作

1. 首先在【层级】下面创建UI里面的Slider组件。设置好它对应的宽度和高度。

b7a97e0944c746369ad0f9ad0640492e.png

 2.调整Slider滑动条的填充颜色。一般声音颜色我黄色,所以我们也调成黄色。

a6ac7a900f6d479a8c98f417ea134add.png

我们尝试滑动Slider里面的value。

9c6a87d481064bb3affbfe3bae2bb0df.png

a.滑动前。

ac1bba4e9b034fffb638a7908c844310.png

b.滑动一半。

 46a46cad5ab94f9c9607018048fe7c1d.png

c.滑动完。

 0b27484fa4db4a6582cfa33a97104396.png

 从以上滑动value值我们可以知道,是通过value值来控制我们填充的效果。制作血条也是类似情况,看具体干什么用的,我们制作滑动控制音量条,所以我们需要先获取声音。

三:创建空物体挂载声音

我们创建一个空物体取名BGM,然后添加AudioSource声音源组件,在组件中添加需要控制声音的大小。

046c3c6373a04cf3b517fa4b7756b947.png

此刻我们已经挂载在需要被控制的声音,然后我们创建脚本来实现声音大小跟随Slider组件里面的Value值变化而变化。

 四:代码实现控制声音大小

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

public class BGM : MonoBehaviour
{
    // Start is called before the first frame update

    //声音控制器
    public Slider AudioSlider;
    //声音控制器文本
    public Text AudioText;
    //音乐
    public AudioSource BGMsource;
    void Start()
    {
        //默认一开始声音为0.6
        AudioSlider.value = 0.6f;
    }
    //控制声音大小方法
    public void AudioCtrl()
    {
        //把value的值赋值给 BGMsource.volume 
        BGMsource.volume = AudioSlider.value;

        //文本显示当前声音大小
        AudioText.text = AudioSlider.value.ToString();
    }

}

五:回到Unity引擎

1.为了能够明显看到出来,我们上面做的更细致,添加了一个文本显示声音大小的情况。

所以我们需要在Unity里面创建一个Text文本,设置好Text文本的大小。

71b4dfcb62934049858b0d8b166def3a.png

 2.挂载组件和对象

613aeb8693864ea7bfd86cbafd8f1ec5.png

 8e3f5456041547079dd954a8e19752ef.png

3.运行

a.默认声音为0.6 

d3842fac90634f7c8aeb2f0fb0777a60.png

b.在游戏场景滑动Slider组件,对应的声音音量值会发生对应的变化。

16d5ae9c30c546498c00cfa82ec611af.png

 制作声音控制器我们应该还有一个按钮,勾选它就有声音,禁用它声音就没了。接下来我们来实现一下。

六:声音控制器开关

1.创建Toggle组件

b33dd35b5b934c5f8c15e43b6f15ef03.png

 2.添加对应的组件到代码中

完善后:以下为整体代码。

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

public class BGM : MonoBehaviour
{
    // Start is called before the first frame update

    //声音控制器
    public Slider AudioSlider;
    //声音控制器文本
    public Text AudioText;
    //声音开关
    public Toggle AudioSwitchToggle;
    //音乐
    public AudioSource BGMsource;
    void Start()
    {
        //默认一开始声音为0.6
        AudioSlider.value = 0.6f;
    }
    //控制声音大小方法
    public void AudioCtrl()
    {
        //把value的值赋值给 BGMsource.volume 
        BGMsource.volume = AudioSlider.value;

        //文本显示当前声音大小
        AudioText.text = AudioSlider.value.ToString();
    }
    //控制声音开关
    public void AudioSwitchToggleCtrl()
    {
        //如果声音控制按钮勾选了,那么我们就有声音
        if (AudioSwitchToggle.isOn)
        {
            //激活声音对象为自动播放
            BGMsource.gameObject.SetActive(true);
            //调用移动滑块控制声音大小
            AudioCtrl();
        }
        else
        {
            //关闭声音对象
            BGMsource.gameObject.SetActive(false);
        }
    }
}

 

3.挂载tgoole对象和添加方法

9e50fd48feb34546b6139bb3fc89cdfa.png

3fa3cb43b6d14787b548f0867bb9855f.png

六:运行效果图

1:运行时

3aeb4fc0b6d14a18a635e84b51575fdd.png 

 2:点击toggle按钮后

aa466dcfc7a0463eb0c7edea1303b1fe.png

我们可以看到BGM对象直接被禁用了,在运行时也听不到声音。 


最后

以上步骤就是制作声音开关控制器和声音滑动条控制声音大小整个流程。

看到的小伙伴一键三连一下吧,你们的支持让我更有动力去创作和分享,希望能一直为你带来惊喜和收获。

2413988ad82470fe49997fa97ee1adf8.png

一键三连吧!

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Openai中的tokens怎么估计

大规模语言模型(LLM)的出现给自然语言处理领域带来了变革的可能性,Openai开放了chatgpt的API,方便了开发人员使用LLM的推理能力,注册时赠送5美元的使用额度,有效期3个月。 如果想便捷的使用chatgpt的API&a…

判断推理

六哥爱学习呀 产品经理 不是说我努力学习我就一定可以通过考试,所以是推不出,类似数学中充分必要性 8 回复 发布于 2019-08-07 16:28 官方解析: 当丙的范围足够大时,可能与甲相交或完全包含甲,在此情况下,有…

【数据结构】顺序队列模拟实现

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

ansible 修改远程主机nginx配置文件

安装ansible brew install ansible 或者 pip3 install ansible 添加远程主机 设置秘钥 mac登录远程主机 ssh -p 5700 root192.168.123.211 ssh localhost #设置双机信任 ssh-kyegen -t rsa #设置主机两边的ssh配置文件 vi /etc/ssh/sshd_config/ PermitRootL…

C++写文件,直接写入结构体

C写文件,直接写入结构体 以前写文件都是写入字符串或者二进制再或者就是一些配置文件,今天介绍一下直接写入结构体,可以在软件参数较多的时候直接进行读写,直接将整个结构体写入和读取,看代码: #include&…

除了ping你用过traceroute吗

一、检查两个计算机间的网络是否通 在检查两个机器的网络通不通,我们经常使用的命令是ping 但是当ping不通时,我们就不知道网络是哪里不通了,只能找网管排查。 这里介绍一个检查网络工具 traceroute 二 、TraceRoute是什么 TraceRoute的中文…

驱动 - 20230816

练习 1.编写LED灯的驱动,可以控制三个灯,应用程序中编写控制灯的逻辑,要使用自动创建设备节点机制 驱动头文件 ledHead.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_GPIOE_MODER 0X50006000 #define PHY_GPIOE_ODR 0X50006014 #d…

toB营销如何从品牌营销转向获客营销?

“解构纷享新营销,赋能用户新增长”,这是2023年下半年,纷享销客践行“以客户成功定义成功”价值观,针对企业用户市场营销领域的全国巡回研讨会,希望把纷享销客在成长路上经历的、收获的经验、踩过的“坑”与用户共享&a…

Postman如何做接口测试:什么?postman 还可以做压力测试?

我们都知道, postman 是一款很好用的接口测试工具。不过 postman 还可以做简单的压力测试,而且步骤只需要 2 步。 首先,打开 postman, 编写接口的请求参数。 然后,点击右下方的 runner 运行器,把需要测试的接口拖动到…

序列模型和循环网络

Sequence Modeling and Recurrent Networks Sequence modeling tasks 在以往的模型中,各个输入之间是独立分布的 x ( i ) x^{(i)} x(i) 之间是相互独立的,同样输出 y ( i ) y^{(i)} y(i)之间也是相互独立的。 但是在序列模型中,输入输出是…

应用开源框架平台,实现流程化办公!

如今,实现流程化办公,管理好数据资源是很多企业的共同想法。如果采用传统的办公方式显然无法实现这一愿望。利用开源框架平台,可以管理好数据资源,为企业提高办公协作效率,进入流程化办公。流辰信息是专业的低代码技术…

如何使用Python编写小游戏?

大家好,我是沐尘而生,如果你是一个热爱编程的小伙伴,又想尝试游戏开发,那么这篇文章一定能满足你的好奇心。不废话,让我们马上进入Python游戏开发的精彩世界吧! Python游戏开发的魅力 编写小游戏不仅仅是锻…

Linux系统管理:虚拟机ESXi安装

目录 一、理论 1.VMware Workstation 2.VMware vSphere Client 3.ESXi 二、实验 1.ESXi 7安装 一、理论 1.VMware Workstation 它是一款专业的虚拟机软件,可以在一台物理机上运行多个操作系统,支持Windows、Linux等操作系统,可以模拟…

opencv-进阶05 手写数字识别原理及示例

前面我们仅仅取了两个特征维度进行说明。在实际应用中,可能存在着更多特征维度需要计算。 下面以手写数字识别为例进行简单的介绍。 假设我们要让程序识别图 20-2 中上方的数字(当然,你一眼就知道是“8”,但是现在要让计算机识别…

lvs负载均衡集群(NAT模式)

lvs负载均衡集群: 1.什么是集群(含义):就是将多台主机作为一个整体,对外提供相同的服务 2.集群使用在哪一个场景:高并发 并发量过大时候加服务器的方式就是向外扩展(横向扩展),就是集群。 3…

HoudiniVex笔记_P24_ForceBasics力基础

原视频:https://www.youtube.com/playlist?listPLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili Houdini版本:19.5 1、什么是Force 本章主要讲重力、弹力、速度与质量、…

强训第33天

选择 C A ping是TCP/IP协议族的一部分,使用ICMP协议,ICMP底层使用IP协议。如果要ping其他网段,则需要设置网关。 如果是二层交换机故障,则ping同网段的也会不通。 C Dos攻击被称之为“拒绝服务攻击”,其目的是使计算机…

网页设计详解(一)-HTML简介

本文作为博主学习笔记:2023-05-04星期四 一、网页介绍 网页是构成网站的基本元素,它是一个包含HTML标签的纯文本文件,是超文本标记语言格式(文件扩展名为.html或.htm)。网页通常用图像档来提供图画,通过浏览器来阅读。 超文本介…

C#__Action和Func委托的基本用法

// 类 class DelegateC{// Action,内置的委托类型,引用了一个void返回值类型的方法,T表示方法参数public static void AText1(){Console.WriteLine("Atext1");}public static void AText2(int x){Console.WriteLine("Atext2&…

【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…