Unity中实现倒计时结束后干一些事情

embedded/2025/1/16 12:51:01/

问题描述:如果我们想实现在一个倒计时结束后可以执行某个方法,比如挑战成功或者挑战失败,或者其他什么的比如生成boss之类的功能,而且你又不想每次都把代码复制一遍,那么就可以用下面这种方法。

结构

实现步骤

创建一个这样的结构(一个图片CountdownManage,两个文本Tips,countdown)

 编写脚本CountdownManage并拖到CountdownManage图片上

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;public class CountdownManage : MonoBehaviour
{public static CountdownManage instance;private Action Dosomething;void Awake(){if (instance == null){instance = this;}else{Destroy(gameObject);}}public void ShowCountdown(string tips, int time, Action dosomething){gameObject.SetActive(true);Dosomething += dosomething;//添加委托gameObject.transform.Find("Tips").GetComponent<Text>().text = tips;StartCoroutine(Countdown(time));}IEnumerator Countdown(int time){while (time > 0){gameObject.transform.Find("countdown").GetComponent<Text>().text = time.ToString();time--;yield return new WaitForSeconds(1);}Dosomething?.Invoke();gameObject.SetActive(false);Dosomething = null;//清空委托}
}

创建一个空对象并编写脚本TextCountdown ,将脚本加到空对象上

using UnityEngine;public class TextCountdown : MonoBehaviour
{void Update(){if (Input.GetKeyDown(KeyCode.Space)) {CountdownManage.instance.ShowCountdown("空格按下的倒计时", 6, SpaceCountdown);}if (Input.GetKeyDown(KeyCode.E)){CountdownManage.instance.ShowCountdown("E按下的倒计时", 10, ECountdown);}}void SpaceCountdown(){Debug.Log("空格按下");}void ECountdown(){Debug.Log("F1按下");}
}

运行游戏按下空格就会出现对应的倒计时,倒计时结束后就会打印对应的调用方。(倒计时结束后按下E就会进入新的倒计时)

 

 如果这篇文章对你有帮助可以点个赞哦!


http://www.ppmy.cn/embedded/154394.html

相关文章

【Rust】枚举与模式匹配

目录 思维导图 一、概述 1. 枚举的定义与使用 2. 特殊枚举&#xff1a;Option 4. 模式匹配 5. if let构造 二、枚举 1. 枚举的定义与作用 2. IP地址的枚举示例 示例代码 3. 结构体与枚举的组合 示例代码 4. 枚举变体的灵活性 示例代码 5. 枚举的方法 代码示例&a…

python mysql库的三个库mysqlclient mysql-connector-python pymysql如何选择,他们之间的区别

三者的区别 1. mysqlclient 特点&#xff1a; 是一个用于Python的MySQL数据库驱动程序&#xff0c;用于与MySQL数据库进行交互。 依赖于MySQL的本地库&#xff0c;因此在安装时需要确保系统上已安装了必要的依赖项&#xff0c;如libmysqlclient-dev等。 性能较好&#xff0c…

SCDN跟高防IP相比哪个更好

在当前的互联网环境中&#xff0c;网络攻击日益频繁和复杂&#xff0c;确保业务的安全性和稳定性成为了众多企业的首要任务。SCDN&#xff08;Secure Content Delivery Network&#xff0c;安全内容分发网络&#xff09;和高防IP作为两种常见的网络安全解决方案&#xff0c;各自…

【IDEA 2024】学习笔记--文件选项卡

在我们项目的开发过程中&#xff0c;由于项目涉及的类过多&#xff0c;以至于我们会打开很多的窗口。使用IDEA默认的配置&#xff0c;个人觉得十分不便。 目录 一、设置多个文件选项卡按照文件字母顺序排列 二、设置多个文件选项卡分行显示 一、设置多个文件选项卡按照文件字…

DCU异构程序--矩阵乘

目录 一、概述 二、程序实现 三、编译运行 一、概述 HIP属于显式编程模型&#xff0c;需要在程序中明确写出并行控制语句&#xff0c;包括数据传输、核函数启动等。核函数是运行在DCU上的函数&#xff0c;在CPU端运行的部分称为主机端&#xff08;主要是执行管理和启动&…

YOLOv9改进,YOLOv9自研检测头融合HAttention用于图像修复的混合注意力检测头

参考文章 完成本篇内容,首先完成这篇文章,并把代码添加到 YOLOv9 中: YOLOv9改进,YOLOv9引入HAttention注意机制用于图像修复的混合注意力转换器,CVPR2023,超分辨率重建 下文都是手把手教程,跟着操作即可添加成功 目录 参考文章🎓一、YOLOv9原始版本代码下载🍀🍀…

npx和npm区别

npx 和 npm 是 Node.js 生态中的两个工具&#xff0c;它们有不同的用途和功能&#xff1a; 1. npm&#xff08;Node Package Manager&#xff09; 主要作用&#xff1a; 包管理工具&#xff1a; 用来安装、管理、卸载 Node.js 的包&#xff08;module/library&#xff09;。提…

PyCharm与GitHub完美对接: 详细步骤指南

在现代软件开发中,版本控制系统已经成为不可或缺的工具。GitHub作为最流行的代码托管平台,与PyCharm这款强大的Python IDE的结合,可以极大地提高开发效率。本文将为您详细介绍如何在PyCharm中无缝对接GitHub,助您轻松实现代码版本管理和团队协作。 © ivwdcwso (ID: u0…