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…...
Unity-MCP协议:可嵌入、可协商的AI上下文通信标准
1. 这不是又一个“AI插件”,而是Unity开发工作流的底层重定义你有没有过这样的时刻:在Unity里反复调整Animator Controller的过渡条件,只为让角色转身动画不穿模;写完一段NavMesh寻路逻辑,却要花两小时调试Agent卡在斜…...
2026在线测评系统十大量表对比:信效度与场景全解析
【30s 核心摘要】2026 年在线测评成人才管理刚需,信效度与场景适配成选型核心。本文聚焦十大量表,从信度、效度、适配场景等维度深度对比,重点解析问卷星、北森、金数据等主流平台的量表能力与落地效果,为企业、高校及机构提供科学…...
手把手教你为WCH CH582移植CherryUSB主机栈(基于RT-Thread,含中断优化)
基于RT-Thread的WCH CH582 USB主机协议栈深度移植指南在嵌入式开发领域,USB主机功能的实现往往意味着设备能够直接连接各类USB外设,从简单的键盘鼠标到复杂的存储设备。对于使用WCH CH582这类RISC-V内核MCU的开发者而言,原厂SDK提供的USB主机…...
PDF 可视化签名盖章页技术解析
本文是我在设备检测系统项目开发中,无设备检测的技术实现备忘录,记载实现过程。 本文以 PC 端页面 sign-pdf.vue 为主线,说明「无设备报检」在报告审批环节如何通过前后端协作,完成报告/记录 PDF 上的签名、印章、报告编号拖放定位,并在审批通过后由后端合并生成带签章的正…...
从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战
从RD、CS到WK:SAR成像算法选型实战指南 当无人机掠过灾区上空,或卫星扫描地球表面时,合成孔径雷达(SAR)正通过电磁波穿透云层和黑暗,将地面信息转化为高分辨率图像。而决定图像质量的关键,在于工…...
当 AI Coding 进入复杂企业系统,为什么提效远没有宣传里那么美好 ?
以 Claude Code、Codex 为代表的自主编码智能体(Coding Agents),正在以惊人的速度席卷软件开发者生态。与此同时,类似“10 倍开发效率”“普通人也能随手构建软件”“程序员即将失业”的说法,也随处可见。这种不分场景…...
【2026实测】怎么提高论文原创度?盘点8款主流降AI工具,附结构级优化指南
写文章最怕碰到什么,是辛辛苦苦自己码出来的字,却被标了极高的AI值。目前很多文本审核机制对内容的原创度要求极高,纯手写的初稿也可能因为句式太工整被判定为机器生成的。 为了帮几个快被这事折腾疯了的学弟学妹找条出路,我花了…...
告别依赖冲突:在Debian12上为特定项目搭建Python2.7.18独立运行环境
告别依赖冲突:在Debian12上为特定项目搭建Python2.7.18独立运行环境 当现代Linux系统已全面拥抱Python3的时代,突然需要维护一个仅支持Python2.7的遗留项目,这种场景对开发者而言无异于一场噩梦。本文将带你用工程化的思维,在Deb…...
5步完美解决Windows 10 PL2303驱动兼容性问题:完整实施方案指南
5步完美解决Windows 10 PL2303驱动兼容性问题:完整实施方案指南 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 在Windows 10系统中使用PL2303 USB转串口设…...
如何高效使用HiveWE:魔兽争霸III地图制作的完整秘籍
如何高效使用HiveWE:魔兽争霸III地图制作的完整秘籍 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版编辑器加载缓慢、操作卡顿而烦恼吗?HiveWE作为一款专注于速…...
