Unity定时播放音乐
一、需求
需要定时在早上8:50,中午12:00,下午13:10定时播放音乐
二、实现步骤
- 依次在unity创建背景图、主文字提示、时间文字提示、音量控制器及音量文字提示、退出按钮、播放按钮,暂停按钮

- 在Canvas下创建一个Script脚本:获取工程中的Text、Button、Slider、AudioClip组件,及音乐文件“AudioClip"。将音乐文件附加到AudioSource的AudioClip上、并将上面的组件关联到代码上;


public Text tipstext;public Text SoundText;public Text dateText;//退出、播放、暂停按钮public Button exitButton;public Button playButton;public Button stopButton;public Slider volSilder;//音乐资源private AudioSource bgm;
- 依次实现文本显示、按钮事件监听、音乐播放、时间逻辑判断,整个需求就完成了
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using Unity.Burst.Intrinsics;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
//using UnityEngine.UIElements;public class MusicControl : MonoBehaviour
{ //文字提示public Text tipstext;public Text SoundText;public Text dateText;//退出、播放、暂停按钮public Button exitButton;public Button playButton;public Button stopButton;public Slider volSilder;//音乐资源private AudioSource bgm;//时间DateTime nowTime = DateTime.Now;string NowTimeStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");// Start is called before the first frame updatevoid Start(){//初始化按钮InitButtonClick();//获取音乐组主键,并设置音量大小bgm = transform.GetComponent<AudioSource>();bgm.volume = 0.5f;//初始化文字提示ShowText(tipstext,"等待音乐播放!");ShowText(SoundText,"当前音量50%,滑动设置音量大小");ShowText(dateText,NowTimeStr);//不设置全屏Screen.fullScreen =false;}// Update is called once per framevoid Update(){//在指定时间执行OnTimePlay();}// 播放音乐 isplaying:是否进行音乐播放private void PlayMusic(bool isplaying){//Debug.Log("调用播放音乐:"+isplaying);if(bgm.enabled ==false){Debug.Log("找不到音乐文件");return;}if(isplaying==true &&bgm.isPlaying==false){bgm.Play();//展示播放音乐提示ShowText(tipstext,"正在播放音乐:"+bgm.clip.name);Debug.Log("正在执行播放音乐");//音乐播放时,每5秒检查一次音乐状态InvokeRepeating("CheckMusicPlaying",0,5.0f);}else if(isplaying == true && bgm.isPlaying ==true){//正在播放音乐时,传 播放参数,提示不能重复播放ShowText(tipstext,"正在播放音乐中,不要重复播放!");}else if(isplaying == false && bgm.isPlaying==true){//正在播放,传 暂停播放参数,停止播放bgm.Stop();ShowText(tipstext,bgm.clip.name +"音乐已停止!");}else if(isplaying ==false && bgm.isPlaying ==false){//未播放,传暂停播放参数,提示不能重复暂停ShowText(tipstext,"音乐已停止,不要重复点击停止播放按钮!");}}//更新Text组件显示的内容private void ShowText(Text gmtxet,string str){gmtxet.text=str;}//初始化按钮点击监听事件void InitButtonClick(){if(exitButton !=null){exitButton.onClick.AddListener(OnExitButtonClick);}else{Debug.Log("退出按钮未获取到!");}if(playButton != null){playButton.onClick.AddListener(OnPlayButtonClick);}else{Debug.Log("播放按钮未获取到!");}if(stopButton != null){stopButton.onClick.AddListener(OnStopButtonClick);}else{Debug.Log("停止按钮未获取到!");}if(volSilder != null){volSilder.onValueChanged.AddListener(OnVolSliderChange);}else{Debug.Log("音量按钮未获取到!");}}//执行退出按钮点击事件void OnExitButtonClick(){Debug.Log("退出");#if UNITY_EDITOR//在编辑器也能退出UnityEditor.EditorApplication.isPlaying = false;#elseApplication.Quit();#endif}//执行点击播放按钮事件void OnPlayButtonClick(){ PlayMusic(true); }//执行点击暂停按钮事件void OnStopButtonClick(){//Debug.Log("停止");PlayMusic(false);}//检查音量播放,音乐播放初始化时调用void CheckMusicPlaying(){if(bgm !=null &&bgm.isPlaying){Debug.Log("音乐正在播放");}else{Debug.Log("音乐已经播放完成");ShowText(tipstext,"音乐播放完成!");//取消检查音乐播放监听事件CancelInvoke("CheckMusicPlaying");}}//已被引用,监听时间 触发播放void OnTimePlay(){//获取当前时间nowTime = DateTime.Now;NowTimeStr =nowTime.ToString("yyyy-MM-dd HH:mm:ss");//展示当前时间ShowText(dateText,NowTimeStr);//Debug.Log("时:"+nowTime.Hour+",分:"+nowTime.Minute);if(nowTime.Hour==8 && nowTime.Minute ==50 && nowTime.Second==0 ){//避免重复播放if(bgm.isPlaying==false){PlayMusic(true); }}else if(nowTime.Hour==12 && nowTime.Minute ==0 && nowTime.Second==0){if(bgm.isPlaying==false){PlayMusic(true); }}else if(nowTime.Hour==13 && nowTime.Minute ==10 && nowTime.Second==0 ){if(bgm.isPlaying==false){Debug.Log("下午:"+nowTime.Hour+"时,"+nowTime.Minute+"分,"+nowTime.Second+"秒");PlayMusic(true); }}}//音量滑动键改变public void OnVolSliderChange(float value){//设置音乐音量大小bgm.volume= value;//float.ToString P表示创建一个百分比字符串,P2保留两位小数ShowText(SoundText,"音量:"+value.ToString("P0"));}}
相关文章:
Unity定时播放音乐
一、需求 需要定时在早上8:50,中午12:00,下午13:10定时播放音乐 二、实现步骤 依次在unity创建背景图、主文字提示、时间文字提示、音量控制器及音量文字提示、退出按钮、播放按钮,暂停按钮 在Canvas下创建一个Script脚本:获取…...
如何做接口测试?
今天来聊聊接口测试,现在是2024年了,打开招聘网站随便点开一个招聘帖子,几乎都可以看到岗位JD要求写着有接口测试经验优先。其重要性可见一斑! 目前,凡是好一点稍具规模的公司哪怕是大厂外包也几乎都要求会接口测试&a…...
U盘打不开提示格式化怎么办,U盘提示格式化数据恢复
U盘打不开提示格式化怎么办?在使用U盘的过程中,有时候我们可能会遇到U盘打不开的情况,并且提示需要格式化才能继续使用。这种情况下,我们应该如何处理呢?U盘承载着无数重要的数据,里面存放着是大家多年辛勤努力的结晶,这些文件见证很多东西。突然打不开,并提示格式化,…...
LeetCode - 存在重复元素
219. 存在重复元素 II 这道题可以用两个方法解决。 哈希表 从左到右遍历数组,并将数组的下标存到hash中,在遍历数字的过程中,如果hash中不存在nums[i],将nums[i]加入到hash当中,若存在,则判断下标之间的关…...
RUST egui体验
egui官方提供了web版的demo,效果还是很不错的,就是用的时候有点一头雾水,没有找到明确的指导怎么把这些组件插入到自己的application或者web。花了一天时间撸了一遍流程,记录一下,说不定以后能用到呢 >_< efram…...
详解llamaindex
什么是LlamaIndex LlamaIndex是一个用于LLM应用程序的数据框架,用于注入、结构化,并访问私有或特定领域的数据。 入门教程 简单使用 # Linux export OPENAI_API_KEYxxxwindows set OPENAI_API_KEYxxx# 代码中加入 API_SECRET_KEY "xxx" B…...
管理类联考–复试–英文面试–问题--规划介绍原因做法--汇总
文章目录 规划介绍原因做法 规划 一、提问方式:问题1:读研的规划;问题2:未来五年的规划;问题3:是否计划读博 常见问法1:Can you talk about your plans in the postgraduate period?…...
成都百洲文化传媒有限公司电商新浪潮的领航者
在当今电商行业风起云涌的时代,成都百洲文化传媒有限公司以其独特的视角和专业的服务,成为了众多商家争相合作的伙伴。今天,就让我们一起走进百洲文化的世界,探索其背后的成功密码。 一、百洲文化的崛起之路 成都百洲文化传媒有限…...
【Unity】获取游戏对象或组件的常用方法
前言 在Unity开发过程中,我们经常需要获取组件,那么在Unity里如何获取组件呢? 一、获取游戏对象 1.GameObject.Find GameObject.Find 是通过物体的名称获取对象的 所以会遍历当前整个场景,效率较低 而且只能获取激活状态的物体…...
html5cssjs代码 024 响应式布局示例
html5&css&js代码 024 响应式布局示例 一、代码二、解释 该HTML代码重点在于构建一个带有响应式设计的两栏布局网页,包含页头、导航条、主要内容区(左右两列)和底部区域,并运用CSS样式设置页面元素的布局、颜色、字体、间…...
json详解
文章目录 概述JSON 发展史什么是 JSON为什么要使用 JSONJSON 的不足JSON 应该如何存储什么时候会使用 JSON1) 定义接口2) 序列化3) 生成 Token4) 配置文件 Json分类json-lib开源的JacksonGoogle的Gson阿里巴巴的FastJsonJSON.simple JSON 序列化方式有哪些消息队列中传输的数据…...
C语言之---柔性数组
1.1前记 也许你从来没有听说过柔性数组这个概念,但是它是确实存在的。 C99中,结构中的最后一个元素允许是未知大小的数组,这就是柔性数组成员。 例如: struct st_type {int i;int a[0]; }; 有些编译器会报错无法编译可以改为:…...
鸿蒙错误记录
鸿蒙错误代码记录 只是记录学习过程中的错误 只是记录学习过程中的错误 刚开始入手学习鸿蒙,错误记录一下 BussinessError 200 授权没有成功,需要先申请权限 BussinessError 3301200:定位时没有网络,打开网络即可...
Leetcode热题100:图论
Leetcode 200. 岛屿数量 深度优先搜索法: 对于这道题来说,是一个非常经典的图的问题,我们可以先从宏观上面来看问题,也就是说在不想具体算法的前提下,简单的说出如何找到所有的岛屿呢? 如图中所示&#x…...
刚进公司第一天-电脑环境搭建
写在前面 之前在公司做过一次开发小工具的分享,这两天有个同事找我学习一些小工具开发的知识,但是我发现他的基础是真的差,想学开发知识却连自己本地电脑环境都没弄好,确实,有些人工作了很久,由于自己工作中…...
kubernetes集群报 unable to load bootstrap kubeconfig处置思路
一.现状和问题现象 公司kubernetes集群是通过kubeadm工具安装的,使用1年之后证书到期。在 kubernetes control plane maste节点服务器上运行 kubeadm certs renew all 命令更新证书后,kubelet 无法正常启动,报错日志如下 Failed to run kube…...
MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用
MacBook远程桌面Windows使用Microsoft Remote Desktop for Mac_亲测使用 像Windows上有自带的远程桌面连接软件.MacBook没有自带的远程连接Windows桌面的工具,需要安装软件来实现. 像远程桌面控制软件一般有 TeamViewer、向日葵远程控制, ToDesk, Microsoft Remote Desktop f…...
Huggingface 笔记:大模型(Gemma2B,Gemma 7B)部署+基本使用
1 部署 1.1 申请权限 在huggingface的gemma界面,点击“term”以申请gemma访问权限 https://huggingface.co/google/gemma-7b 然后接受条款 1.2 添加hugging对应的token 如果直接用gemma提供的代码,会出现如下问题: from transformers i…...
WebGL 理论基础 01 WebGL 基础概念
WebGL 理论基础 基础概念 WebGL 基础概念 顶点着色器的作用是计算顶点的位置。根据计算出的一系列顶点位置,WebGL可以对点, 线和三角形在内的一些图元进行光栅化处理。当对这些图元进行光栅化处理时需要使用片段着色器方法。 片段着色器的作用是计算…...
Leetcode 28:找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack &q…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
