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

server/2025/1/17 6:38:27/

问题描述:如果我们想实现在一个倒计时结束后可以执行某个方法,比如挑战成功或者挑战失败,或者其他什么的比如生成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/server/159018.html

相关文章

微信小程序实现个人中心页面

文章目录 1. 官方文档教程2. 编写静态页面3. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/ 2. 编写静态页面 mine.wxml布局文件 <!--index.wxml--> <navigation-bar title"个人中心" ba…

Linux 音视频入门到实战专栏(音频篇)基于alsa api的音频播放/录制流程

文章目录 一、简介1.1、音频播放流程1.2、音频录制流程 二、播放音频示例三、录制音频示例 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;本篇将介绍如何调用alsa api来进行音频数据的播放和录制。 一、简介 1.1、音频播放流…

学习微信小程序的下拉列表控件-picker

1、创建一个空白工程 2、index.wxml中写上picker布局&#xff1a; <!--index.wxml--> <view class"container"><picker mode"selector" range"{{array}}" bindchange"bindPickerChange"><view class"pick…

10k 、100k NTC热敏电阻阻值表与温度关系

常用的热敏电阻有10k,100k阻值。 所谓的10k&#xff0c;100k是指该热敏电阻在摄氏25度的时候所对应的阻值。 还有一个重要的参数就是热敏电阻的B值&#xff0c;这个B值网上有很多资料和解读&#xff0c;其实可以把它理解成是该热敏电阻阻值随温度的变化率&#xff0c;他对温度…

【Linux】常见指令(一)

Linux常见指令 01.whoami02.pwd03.ls04.mkdir05.cd 本文LInux环境为&#xff0c;使用XShell远程登陆到Linux。 具体如何环境搭建&#xff0c;大家可以查看其他博客。 01.whoami whoami 指令用来查看当前账户是谁。 如上图所示&#xff0c;使用whoami指令&#xff0c;查看到现在…

MATLAB语言的面向对象编程

MATLAB语言的面向对象编程 引言 MATLAB&#xff0c;作为一种高效且功能强大的数值计算环境&#xff0c;以其丰富的数学工具箱和强大的绘图功能被广泛应用于工程、科学研究及教育领域。近年来&#xff0c;随着软件开发需求的不断增加&#xff0c;MATLAB也引入了面向对象编程&a…

使用Python和FFmpeg批量转换视频为GIF

使用Python和FFmpeg批量转换视频为GIF 我们来继续昨天的项目&#xff0c;但是昨天所说的是单个视频转pdf&#xff0c;要实现批量转化&#xff0c;还需进行参数的调整 批量转换视频为GIF的示例代码 下面是一个Python脚本示例&#xff0c;展示了如何遍历一个目录中的所有视频文…

《鸿蒙Next旅游应用:人工智能赋能个性化与智能导览新体验》

随着鸿蒙Next的推出&#xff0c;旅游应用迎来了全新的发展机遇&#xff0c;借助人工智能技术能为用户带来更出色的个性化推荐和智能导览服务。 鸿蒙Next与人工智能融合优势 鸿蒙Next拥有强大的分布式能力和原生智能体验。其能打破设备界限&#xff0c;实现多设备协同&#xf…