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"));}}

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

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

相关文章

【光标精灵】让您享受鼠标皮肤多样化快捷更换

鼠标作为我们日常使用频率最高的“小伙伴”&#xff0c;扮演着至关重要的角色。尤其是在女生群体中&#xff0c;对于打造一个个性化、可爱的电脑桌面和软件界面的需求日益增长。然而&#xff0c;尽管电脑默认提供了一些可更换的光标图案&#xff0c;但仍显得有些单调和呆板。想…

acwing算法提高之搜索--剪枝

目录 1 介绍2 训练 1 介绍 本专题用来记录使用dfs剪枝技巧求解的题目。 剪枝有以下思路&#xff1a; 优化搜索顺序。可行性剪枝。最优性剪枝。唯一性剪枝&#xff0c;也叫去除冗余。记忆化搜索&#xff0c;也叫dp。 2 训练 题目1&#xff1a;165小猫爬山 C代码如下&#…

基于SpringBoot 实现指标监控及日志管理

添加Actuator功能 Spring Boot Actuator可以帮助程序员监控和管理SpringBoot应用&#xff0c;比如健康检查、内存使用情况统计、线程使用情况统计等。我们在SpringBoot项目中添加Actuator功能&#xff0c;即可使用Actuator监控 项目&#xff0c;用法如下&#xff1a; 在被监…

从Spring进化为SpringBoot

目录 零.SpringBootApplication 一.起步依赖 二.自动配置 三.自动配置的原理 1.装配常见方案 【1】方案1&#xff1a;ComponentScan 组件扫描 【2】方案2&#xff1a;Import 导入 【3】使用第三方依赖提供的 EnableXxxxx注解 2.自动装配原理 3.实现starter 四.内置T…

olap分析型数据库

一、 1、clickhouse 特点&#xff1a; 分析型数据库 列式数据管理 高压缩率 不适用场景&#xff1a; 不适合联机事务处理 不支持更新删除单条记录 多表连接查询效率低 为什么这么快&#xff1a; 分区健、主键预排序、索引 压缩&#xff0c;减少I/O 向量化&#xff…

虚拟直播赋能文旅,蓝海创意云亮相文旅虚拟现实应用推广交流活动

3月21日&#xff0c;由文化和旅游部产业发展司主办&#xff0c;中国信息通信研究院、北京市石景山区文化和旅游局、中国动漫集团有限公司承办的文化和旅游虚拟现实应用推广交流活动在首钢一高炉SoReal科幻乐园33 Meta Club举办。蓝海创意云应邀参与此次活动&#xff0c;携vLive…

MySQL索引的创建与基本用法

文章目录 MySQL索引MySQL索引的类型与创建方法基础索引 唯一索引**唯一索引的创建** ******注意唯一索引允许有空值&#xff08;注意和主键不同&#xff09;。如果是用组合索引创建&#xff0c;则列值的组合必须唯一。添加唯一键将自动创建唯一索引。*** ***主键索引组合索引**…

Java毕业设计 基于springboot医院挂号系统 医院管理系统

Java毕业设计 基于springboot医院挂号系统 医院管理系统 springboot医院挂号系统 医院管理系统 功能介绍 用户&#xff1a;登录 首页 个人资料 修改密码 门诊管理 用户挂号 医生&#xff1a;登录 首页 个人资料 修改密码 门诊管理: 用户挂号 处方划价 项目划价 项目缴费 项目…

C++多线程并发学完后,该学什么呢?

概述 如何安排知识点的学习次序&#xff0c;有很多做法&#xff0c;下面提供一种思路。 答&#xff1a;C在多线程学完后&#xff0c;可以学网络。 相当于这么一个学习及实际开发中常见演进过程&#xff1a; 单线程、无网络的程序&#xff1a; 一家公司&#xff0c;一个员工…

多级页表查询

说明一下这个三级页表的查询&#xff0c;会需要上面的L2,L1,L0 如果在二级页表level就是2&#xff0c;PGSHIFT是12&#xff0c;那么就是往左移129*2位置&#xff0c;在&9bit就得到L2&#xff0c;其他以此类推 也表查询&#xff0c;首先有跟页表的地址pagetable&#xff0c;…

美团到店-后端开发一面

1. 介绍一下spring的两大核心思想 2. 介绍一下java的代理&#xff0c;以及动态代理和静态代理的区别 3. spring动态代理是如何生成的&#xff0c;jdk动态代理和cglib的区别 4. 介绍一下synchronized关键字、以及synchronized锁和lock的区别 5. 讲一下java中synchronized的锁升级…

测径仪:大小通吃的“直径判官”

嗨&#xff0c;大家好&#xff01;今天我要给你们介绍一个超级厉害的玩意儿——在线测径仪&#xff01;它可不是一般的测量工具&#xff0c;它是那个能让直径无处遁形的“直径判官”&#xff01; 想象一下&#xff0c;有了在线测径仪&#xff0c;你就像是拥有了一双超级敏锐的“…

elasticsearch的数据搜索

DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户…

docker容器下部署hbase并在springboot中通过jdbc连接

我在windows的docker中部署了一个hbase服务&#xff0c;然后用springboot连接到此服务并访问数据。 详情可参考项目中的README.md。项目中提供了用于构建镜像的dockerfile&#xff0c;以及测试代码。 项目连接&#xff1a;https://gitee.com/forgot940629/hbase_phoenix_spring…

【Windows 常用工具系列 15 -- VMWARE ubuntu 安装教程】

文章目录 安装教程镜像下载 工具安装 安装教程 安装教程参考链接&#xff1a;https://blog.csdn.net/Python_0011/article/details/131619864 https://linux.cn/article-15472-1.html 激活码 VMware 激活码连接&#xff1a;https://www.haozhuangji.com/xtjc/180037874.html…

一下想要邮寄很多快递,该怎么邮寄呢?

我们都知道淘宝网上开店的经常会邮寄很多快递&#xff0c;但是这么多快递不可能一下子拿到快递驿站去邮寄吧&#xff0c;但是快递员又不上门取件可怎么办呀&#xff0c;这可真是让人伤透了脑筋了&#xff0c; 我们都知道我们所在的区域一般都会有快递员来承揽我们所在区域的快递…

Jenkins安装 Linux 更换镜像 安装插件

Jenkins安装 Linux 更换镜像 安装插件 前言 下面叙述了三种jenkins安装的方式,jenkins安装之前必须有java环境因为他是java写的… yum安装只能安装最新版本的jenkins,但是jenkins是java写的所以他强依赖java版本,当你的服务器的java版本与jenkins版本冲突时还需要给jenkins重…

烟火AI识别检测算法在新能源汽车充电桩站点的应用方案

新能源汽车作为现代科技与环保理念的完美结合&#xff0c;其普及和应用本应带给人们更加便捷和绿色的出行体验。然而&#xff0c;近年来新能源汽车充电火灾事故的频发&#xff0c;无疑给这一领域投下了巨大的阴影。这不禁让人深思&#xff0c;为何这一先进的交通工具在充电过程…

C语言复杂度(个人笔记)

时间复杂度主要衡量一个算法的运行快慢. 空间复杂度主要衡量一个算法运行所需要的额外空间. 时间复杂度 算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度. 只需要大概执行次数&#xff0c;我们使用大O的渐进表示法。(看谁对数学表达式的影响最大) 空间复杂度 是…

MySQL双机热备份操作

文章目录 概要数据库服务器准备1.MySQL数据库主服务器。2.备份数据库服务器数据准备主服务器dump数据从数据库导入数据配置双机热备份主服务配置从服务配置概要 对于已经在运行的MySQL数据库如何进行双机热备份?本文章详细介绍如何操作进行MySQL双机热备份。 数据库服务器准…