Unity类银河战士恶魔城学习总结(P156 Audio Settings音频设置)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili
教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/
本章节实现了音频的大小设置与保存加载
音频管理器
UI_VolumeSlider.cs
定义了 UI_VolumeSlider
类,用于处理与音频设置相关的 UI 滑块(Slider
)交互。
-
音量调整:
SliderValue(float _value)
方法根据滑块的值调整音量,利用audioMixer.SetFloat
设置音频混音器中指定参数(parametr
)的值。使用Mathf.Log10(_value) * multiplier
将滑块值转化为对数刻度,以平滑音量变化。
-
加载保存的音量设置:
LoadSlider(float _value)
方法将加载的音量值(如果值大于 0.001)应用到滑块上,避免音量翻转。
-
成员变量:
slider
:关联的 UI 滑块。parametr
:音频混音器中的参数名称。audioMixer
:用于音频混合的AudioMixer
实例。multiplier
:用于音量计算的乘数。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;//2024.12.2 from summer to winter
public class UI_VolumeSlider : MonoBehaviour
{public Slider slider;//滑块public string parametr;//音频混合器的参数[SerializeField] private AudioMixer audioMixer;//音频混合器[SerializeField] private float multiplier;//音量的倍数public void SliderValue(float _value) => audioMixer.SetFloat(parametr, Mathf.Log10(_value) * multiplier);//设置音量public void LoadSlider(float _value)//加载音量{if(_value >= 0.001f)//防止翻转slider.value = _value;}}
UI.cs
添加的部分!!!
这段代码包含了两个方法:LoadData
和 SaveData
,用于加载和保存游戏中的音量设置。它们的主要功能是处理音量设置的保存和加载机制,将音量设置保存在 GameData
对象中并能够恢复。
1. LoadData(GameData _data)
:
- 功能:加载音量设置并应用到 UI 滑块。
- 逻辑:
- 遍历传入的
GameData
对象中的volumeSettings
字典,字典存储了音量设置的参数名和相应的值(如"masterVolume"
,"musicVolume"
等)。 - 对每一个音量设置项(
KeyValuePair<string, float>
),遍历volumeSettings
(UI 控件中的UI_VolumeSlider
实例),检查每个UI_VolumeSlider
的parametr
(音频参数名称)是否与保存的音量设置的参数名称相匹配。 - 如果匹配,就调用
UI_VolumeSlider
的LoadSlider
方法,将保存的音量值应用到相应的 UI 滑块上。
- 遍历传入的
2. SaveData(ref GameData _data)
:
- 功能:保存当前的音量设置到
GameData
中。 - 逻辑:
- 清空
GameData
对象中的volumeSettings
字典,以确保旧的音量设置不被遗留。 - 遍历
volumeSettings
(UI 控件中的UI_VolumeSlider
实例),获取每个滑块的值,并将其添加到volumeSettings
字典中。 - 每个滑块的
parametr
(音频参数名称)作为字典的键,slider.value
(滑块当前的值)作为字典的值,保存到GameData
中。
- 清空
public void LoadData(GameData _data){foreach(KeyValuePair<string,float> pair in _data.volumeSettings)//遍历音量设置{foreach (UI_VolumeSlider item in volumeSettings){if (item.parametr == pair.Key)//如果音量设置的参数和保存的参数一致item.LoadSlider(pair.Value);}}}public void SaveData(ref GameData _data){_data.volumeSettings.Clear();//清空音量设置foreach (UI_VolumeSlider item in volumeSettings)//遍历音量设置{_data.volumeSettings.Add(item.parametr,item.slider.value);//保存音量设置}}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class UI : MonoBehaviour,ISaveManager
{[Header("End screens")][SerializeField] private UI_FadeScreen fadeScreen;[SerializeField] private GameObject endText;[SerializeField] private GameObject restartButton;[Space][SerializeField] private GameObject characterUI;[SerializeField] private GameObject skillTreeUI;[SerializeField] private GameObject craftUI;[SerializeField] private GameObject optionsUI;[SerializeField] private GameObject inGameUI;//物品提示框和状态提示框public UI_SkillToolTip skillToolTip;public UI_ItemTooltip itemToolTip;public UI_StatToolTip statToolTip;public UI_CraftWindow craftWindow;[SerializeField] private UI_VolumeSlider[] volumeSettings;private void Awake(){SwitchTo(skillTreeUI);//2024年11月22日,P138 Skill Tree Hot Fix,启动时默认显示技能树界面fadeScreen.gameObject.SetActive(true);}void Start(){SwitchTo(inGameUI);itemToolTip.gameObject.SetActive(false);//戏启动时隐藏物品提示框和状态提示框statToolTip.gameObject.SetActive(false);}void Update(){if (Input.GetKeyDown(KeyCode.C))SwitchWithKeyTo(characterUI);if (Input.GetKeyDown(KeyCode.B))SwitchWithKeyTo(craftUI);if (Input.GetKeyDown(KeyCode.K))SwitchWithKeyTo(skillTreeUI);if (Input.GetKeyDown(KeyCode.O))SwitchWithKeyTo(optionsUI);}public void SwitchTo(GameObject _menu)// 该方法用于切换到指定的UI界面{for (int i = 0; i < transform.childCount; i++)//遍历当前UI对象的所有子物体{bool fadeScreen = transform.GetChild(i).GetComponent<UI_FadeScreen>() != null;//检查UI界面是否有FadeScreensif (fadeScreen==false)transform.GetChild(i).gameObject.SetActive(false);//遍历并隐藏所有子元素,确保了在显示新的UI界面时,所有其他的UI界面都会被隐藏}if (_menu != null)//传入的菜单不为空{_menu.SetActive(true);//显示}}public void SwitchWithKeyTo(GameObject _menu)//处理切换UI的逻辑{if (_menu != null && _menu.activeSelf)// UI界面已经显示,隐藏, 如果目标UI界面未显示,调用 SwitchTo 显示。{_menu.SetActive(false);CheckForInGameUI();return;}SwitchTo(_menu);}private void CheckForInGameUI()//关闭其他UI都会回到InGameUI{for (int i = 0; i < transform.childCount; i++)//{//p152修复切换到其他UI时,InGameUI关闭的问题if (transform.GetChild(i).gameObject.activeSelf && transform.GetChild(i).GetComponent<UI_FadeScreen>() == null)//其他的UI全部关闭并且淡入淡出关闭return;}SwitchTo(inGameUI);}public void SwitchOnEndScreen(){fadeScreen.FadeOut();StartCoroutine(EndScreenCorutione());}IEnumerator EndScreenCorutione(){yield return new WaitForSeconds(1);endText.SetActive(true);yield return new WaitForSeconds(1.7f);restartButton.SetActive(true);}public void RestartGameButton() => GameManager.instance.RestartScene();public void LoadData(GameData _data){foreach(KeyValuePair<string,float> pair in _data.volumeSettings)//遍历音量设置{foreach (UI_VolumeSlider item in volumeSettings){if (item.parametr == pair.Key)//如果音量设置的参数和保存的参数一致item.LoadSlider(pair.Value);}}}public void SaveData(ref GameData _data){_data.volumeSettings.Clear();//清空音量设置foreach (UI_VolumeSlider item in volumeSettings)//遍历音量设置{_data.volumeSettings.Add(item.parametr,item.slider.value);//保存音量设置}}
}
相关文章:
Unity类银河战士恶魔城学习总结(P156 Audio Settings音频设置)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了音频的大小设置与保存加载 音频管理器 UI_VolumeSlider.cs 定义了 UI_VolumeSlider 类,用于处理与音频设置相关的…...
SpringMVC工作原理【流程图+文字详解SpringMVC工作原理】
SpringMVC工作原理 前端控制器:DispactherServlet处理器映射器:HandlerMapping处理器适配器:HandlerAdapter处理器:Handler,视图解析器:ViewResolver视图:View 首先用户通过浏览器发起HTTP请求…...
web五、元素尺寸和位置、节点操作(DOM,查找节点,增加节点,删除节点)、阶段案例
一、元素尺寸与位置 注意:offset家族返回不带单位的数字,而且都是只读的 1,元素尺寸(大小) 大小: offsetWidth和offsetHeight 获取元素的自身宽高、包含元素自身设置的宽高、padding、border 返回的是…...
Vue前端开发-路由树配置
一个配置路由的文件由导入路由模块、创建路由对象和导出路由对象三个部分组成,在创建路由对象时,需要构建路由数组,路由数组中包括一级、二级和多级路由结构,因此,这种结构的路由配置,又称为路由树配置。 …...
记录一次网关异常
记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错,并且有时候就算什么都不操作,也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…...
级联树结构TreeSelect和上级反查
接口返回结构 前端展示格式 前端组件 <template><div ><el-scrollbar height"70vh"><el-tree :data"deptOptions" :props"{ label: label, children: children }" :expand-on-click-node"false":filter-node-me…...
家政小程序开发,打造便捷家政生活小程序
目前,随着社会人就老龄化和生活压力的加重,家政服务市场的需求正在不断上升,家政市场的规模也正在逐渐扩大,发展前景可观。 在市场快速发展的影响下,越来越多的企业开始进入到市场中,同时家政市场布局也发…...
Redis和MySQL之间如何进行数据同步
原因 为什么要进行Redis和MySQL的数据同步? 性能优化:MySQL是关系型数据库,数据读取和存储相对复杂;Redis是内存数据库,读写速度极快,将热点数据存在Redis,可以大大提高系统的访问速度。 数据…...
Kafka的学习路径规划
目录标题 1. 记(记忆力)Kafka核心概念Kafka关键配置 2. 懂(理解力)Kafka工作原理Kafka核心功能Kafka架构设计 3. 网(知识网络)技术栈整合用例和场景 4. 拓(全面拓展)学习材料多样化内…...
SpringBoot 框架下基于 MVC 的高校办公室行政事务管理系统:设计开发全解析
2系统开发环境 2.1vue技术 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第…...
【JavaEE】Spring Boot 项目创建
目录 一、idea创建Spring Boot项目1.1 创建过程1.2 依赖下载问题 二、网页创建Spring Boot项目三、目录介绍四、运⾏项⽬,看是否创建成功4.1 请求响应流程分析 五、常见报错5.1 Whitelabel Error Page4.1.1 注解写错:5.1.2 500 ⽆法访问此⽹站 六、状态码…...
java垃圾回收机制介绍
Java垃圾回收机制(Garbage Collection, GC)是Java编程语言中的一项重要特性,它自动管理内存,释放不再使用的对象 1. 堆(Heap): • Java虚拟机(JVM)中用于存储对象实例的内…...
计算机视觉硬件知识点整理六:工业相机选型
文章目录 前言一、工业数字相机的分类二、相机的主要参数三、工业数字摄像机主要接口类型四、选择工业相机的考量因素六、实例分析 前言 随着科技的不断进步,工业自动化领域正经历着前所未有的变革。作为工业自动化的重要组成部分,工业相机在工业检测、…...
一种多功能调试工具设计方案开源
一种多功能调试工具设计方案开源 设计初衷设计方案具体实现HUB芯片采用沁恒微CH339W。TF卡功能网口功能SPI功能IIC功能JTAG功能下行USB接口 安路FPGA烧录器功能Xilinx FPGA烧录器功能Jlink OB功能串口功能RS232串口RS485和RS422串口自适应接口 CAN功能烧录器功能 目前进度后续计…...
鸿蒙NEXT开发笔记(十九)仿抖音快手App的相对布局
上一节我们利用photoAccessHelper实现了从相册挑选视频的功能,但在短视频APP界面,视频画面上还叠加了若干交互图标,包括但不限于:点赞、收藏、评论、分享等等。那么在某个组件上叠加显示其他组件,就用到了相对布局这个…...
微信小程序px和rpx单位互转方法
js代码如下 Page({data: {width: 0,width2: 0},onLoad: function (options) {let px this.pxToRpx(380)let rpx this.rpxToPx(730.7692307692307) // 检查两个互转是否是相同即可,例如pxToRpx(380)转成730.7692307692307 则rpxToPx(730.7692307692307)如果是380则代表互转没…...
WPF+LibVLC开发播放器-LibVLC在C#中的使用
LibVLC在C#中的使用 安装包Nuget使用控件使用播放器初始化加载视频文件 视频教程: 使用WPFLibVLC快速开发一个播放器 安装包Nuget 安装下面两个包,必须安装两个 一个是相关框架对应的包,Winform就安装LibVLCSharp.Winform;WPF就安装LibVLCSharp.WPF&am…...
【Unity基础】Unity中Transform.forward的详解与应用
在Unity中,Transform.forward 是一个常用属性,它表示物体的“前方”方向,即物体本地坐标系中 Z 轴(蓝色轴)在世界坐标系中的方向。它动态反映物体的旋转情况,非常适合用于移动、检测、方向控制等场景。 什么…...
01-树莓派基本配置-基础配置配置
树莓派基本配置 文章目录 树莓派基本配置前言硬件准备树莓派刷机串口方式登录树莓派接入网络ssh方式登录树莓派更换国内源xrdp界面登录树莓派远程文件传输FileZilla 前言 树莓派是一款功能强大且价格实惠的小型计算机,非常适合作为学习编程、物联网项目、家庭自动化…...
Milvus×OPPO:如何构建更懂你的大模型助手
01. 背景 AI业务快速增长下传统关系型数据库无法满足需求。 2024年恰逢OPPO品牌20周年,OPPO也宣布正式进入AI手机的时代。超千万用户开始通过例如通话摘要、新小布助手、小布照相馆等搭载在OPPO手机上的应用体验AI能力。 与传统的应用不同的是,在AI驱动的…...
《Python基础》之Pandas库
目录 一、简介 二、Pandas的核心数据结构 1、Series 2、DataFrame 三、数据读取与写入 1、数据读取 2、数据写入 四、数据清洗与处理 1、处理缺失值 2、处理重复值 3、数据转换 五、数据分析与可视化 1、统计描述 2、分组聚合 3、数据可视化 六、高级技巧 1、时…...
LeetCode Hot100 31~40
链表 31. K个一组翻转链表 题目不难理解 主要是怎么写出清晰易懂的代码 可以先分成K组 再排序 class Solution { public:ListNode* reverseKGroup(ListNode* head, int k) {ListNode* dummyHead new ListNode();dummyHead->next head;// 首先查看需要翻转几次int count…...
C语言(分支练习)
1.输⼊你的⾝⾼和体重,测试你的健康状况。 计算bmi的值, bmi (体重(kg)/⾝⾼(m)的平⽅) 如果bmi ⼩于18.5, 则显⽰“偏瘦,注意加强营 养” 如果bmi 在18.5和23.9之间&a…...
指针(上)
目录 内存和地址 指针变量和地址 取地址(&) 解引用(*) 大小 类型 意义 const修饰 修饰变量 修饰指针 指针运算 指针- 整数 指针-指针 指针的关系运算 野指针 概念 成因 避免 assert断言 指针的使用 strl…...
(笔记)vue3使用Element Plus全局引入icons
如果你想要在项目中直接使用 Element Plus 的图标 icons,而不需要在每次使用的时候都要引入,那么你可以参考本文。 1、图标下载 在使用 Element Plus 的图标前,需要先下载图标库。 npm $ npm install element-plus/icons-vue yarn $ ya…...
基于Matlab卡尔曼滤波的GPS/INS集成导航系统研究与实现
随着智能交通和无人驾驶技术的迅猛发展,精确可靠的导航系统已成为提升车辆定位精度与安全性的重要技术。全球定位系统(GPS)和惯性导航系统(INS)在导航应用中各具优势:GPS提供全球定位信息,而INS…...
大学阶段matlab期末考试所有一定会考的函数及其基本格式
1.矩阵操作相关函数 zeros函数 基本功能:创建全零矩阵。基本格式:A zeros(m,n),其中m和n分别表示矩阵的行数和列数,例如创建一个3X4的全零矩阵A,可以写为A zeros(3,4)。 ones函数 基本功能:创建全 1 矩…...
【linux】(23)对象存储服务-MinIo
MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API。 Docker安装MinIo 前提条件 确保您的系统已经安装了 Docker。如果还没有安装 Docker,可以参考 Docker 官方文档进行安装。 1. 拉取 MinIO Docker 镜像 首先,从 Docker Hub 拉取 Mi…...
Nginx学习-安装以及基本的使用
一、背景 Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,特别是现在前后端分离的情况下。而在开发过程中,我们常常需要在window系统下使用Nginx…...
前端:localstorage, session
学习帖子 —总结— 要快速掌握 localStorage 和 sessionStorage 的核心知识,以下是最重要的20%,这将帮助你理解和操作80%的功能: 基本概念: localStorage 和 sessionStorage 是 Web Storage API 的一部分,用于在客户端…...
剖析一下自己的简历第二条
剖析一下自己的简历第二条 背景前置说明可能会被问到的问题 背景 剖析一下自己简历, 增加对一些专业知识的掌握. 我的简历第二条是这样写的: “2. 熟悉JVM、JMM,包括内存模型,垃圾回收机制,了解其基本调优技巧并具备线上调优经验。”. 前置…...
利用Docker一键发布Nginx-Tomcat-MySQL应用集群
Docker简介,可以看上一篇文章: 为什么互联网公司离不开Docker容器化,它到底解决了什么问题?-CSDN博客 Docker体系结构 docker核心就是镜像和容器: 镜像就是应用程序的安装文件,包含了所有需要的资源&…...
九,[极客大挑战 2019]LoveSQL1
进入靶场 随便输输 试试字符 报错了 根据以上4张图知是单引号闭合 还以为这是flag呢,白激动一场,,,,,,,,自闭了 有个搞笑的点,其实可以用sqlmap 不过咱不用哈…...
17 go语言(golang) - 错误处理
错误处理 错误处理是编程中用于识别、响应和恢复程序运行时出现的错误和异常情况的过程。其目的是确保程序的鲁棒性(一个系统、模型或函数在面对错误输入、工作压力、意外情况或故意攻击时仍能保持稳定性和可靠性的能力),即使在出现错误的情…...
前端跳转路由的时候,清掉缓存
清除路由缓存的方法 使用 $router.push() 方法:在跳转路由时,可以通过传递一个包含 replace: true 属性的对象来实现清除路由缓存。例如: this.$router.push({ path: "/new-route", replace: true }); 使用 $router.replace…...
CentOS使用chrony服务进行时间同步源设置脚本
CentOS使用chrony服务进行时间同步源设置脚本 #!/bin/bash# Created: 2024-11-26 # Function: Check and Set OS time sync source to 10.0.11.100 # FileName: centos_set_time_source_to_ad.sh # Creator: Anster # Usage: # curl http://webserver-ip/scripts/centos_set…...
AI RPA 影刀基础教程:开启自动化之旅
RPA 是什么 RPA 就是机器人流程自动化,就是将重复的工作交给机器人来执行。只要是标准化的、重复的、有逻辑行的操作,都可以用 RPA 提效 准备 安装并注册影刀 影刀RPA - 影刀官网 安装 Chrome 浏览器 下载链接:Google Chrome 网络浏览器 …...
深入解析Java集合框架:List集合及其实现类的应用与原理
|| 持续分享系列教程,关注一下不迷路 || || B站视频教程:墨轩大楼 || || 知识星球:墨轩编程自习室 || Java集合框架是Java编程语言中一个非常重要的组成部分,…...
MySQL需掌握到何种程度?才能胜任工作
大家好,我是袁庭新。星友问:MySQL需要学到什么程度?才能胜任日常的软件开发工作呢!以下是一些建议的学习目标和程度,这些目标旨在帮助你在工作中高效地使用MySQL。 数据库的基本概念、MySQL的安装及配置、SQL的概念、S…...
如何使用brew安装phpredis扩展?
如何使用brew安装phpredis扩展? phpredis扩展是一个用于PHP语言的Redis客户端扩展,它提供了一组PHP函数,用于与Redis服务器进行交互。 1、cd到php某一版本的bin下 /usr/local/opt/php8.1/bin 2、下载 phpredis git clone https://githu…...
力扣hot100道【贪心算法后续解题方法心得】(三)
力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划?关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…...
时间同步服务器--Linux中
时间同步服务器 1. 时间同步服务 时间同步:多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP(Network Time Protocol )协议使网络中的各…...
银河麒麟V10-SP1设置redis开机自启
前言: redis安装请看:银河麒麟V10-SP1离线安装redis5.0.1_银河麒麟v10 redis5.0-CSDN博客 一、编辑自启文件 vim /etc/systemd/system/redis.service [Unit] DescriptionRedis In-Memory Data Store Afternetwork.target [Service] Typeforking ExecS…...
JVM 之垃圾回收器
一、GC 的分类 1.1 串行 VS 并行 串行回收:指在同一时间段内只允许有一个 CPU 用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾回收结束 在单 CPU 处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的超过并…...
基于Java Springboot宠物咖微信小程序
一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信开发者工具 数…...
求助——AssertionError: Attribute pipeline is missing from configuration.json.
我在本地运行Sunsimiao大模型的时候遇到了“AssertionError: Attribute pipeline is missing from configuration.json.”的问题。在网上找了很多问题都没有解决,求助一下广大网友。有什么好的解决方法吗? 本地环境如上所示,不知是哪里出…...
LearnOpenGL学习(光照 -- 颜色,基础光照,材质,光照贴图)
光照 glm::vec3 lightColor(0.0f, 1.0f, 0.0f); glm::vec3 toyColor(1.0f, 0.5f, 0.31f); glm::vec3 result lightColor * toyColor; // (0.0f, 0.5f, 0.0f); 说明:当我们把光源的颜色与物体的颜色值相乘,所得到的就是这个物体所反射的颜色。 创建…...
vulnhub靶场【哈利波特】三部曲之Aragog
前言 使用virtual box虚拟机 靶机:Aragog : 192.168.1.101 攻击:kali : 192.168.1.16 主机发现 使用arp-scan -l扫描,在同一虚拟网卡下 信息收集 使用nmap扫描 发现22端口SSH服务,openssh 80端口HTTP服务,Apach…...
【开发语言】层次状态机(HSM)介绍
层次状态机(Hierarchical State Machine, HSM),从基本原理、结构设计、实现方法以及如何结合 Qt 进行具体实现等方面进行分析。 1. 层次状态机的基本原理 层次状态机是一种用于管理复杂系统行为的状态机模型,它通过将状态组织成…...
Midjourney Imagine API 申请及使用
Midjourney Imagine API 申请及使用 Midjourney 是一款非常强大的 AI 绘图工具,只要输入关键字,就能在短短一两分钟生成十分精美的图像。Midjourney 以其出色的绘图能力在业界独树一帜,如今,Midjourney 早已在各个行业和领域广泛…...