可能倒计时的功能太简单了,没有找到关于倒计时的博客参考,所以本人自己写了倒计时的功能,希望能帮助做Unity的小伙伴们绕过一些坑。
实现效果如下:
Hierarchy 面板层级关系:
将C#脚本挂载到“Text_CounDown”上运行,即可实现如图所示功能。
C#脚本如下:
using UnityEngine; using UnityEngine.UI; public class UserSystem : MonoBehaviour { // 用于现实倒计时的 UI 组件 private Text counDown; // 用于积累时间(累加 Time.deltaTime) private float timeFloat; // 需要倒计时多长时间(以 分 为单位) [Range(0f, 10f)]if (minInt == 0) secondInt = (int)(min * 60);
public float min = 5.05f; // 用于显示倒计时的分钟数 private int minInt; // 用于显示倒计时的秒数 private int secondInt; private void Start() { // 得到用于现实倒计时的 UI 组件 counDown = transform.Find("Text_CountDown").GetComponent<Text>(); // 赋值分钟数 minInt = (int)min; // 赋值秒数(分钟数为 0 时需要判断,否则除数为 0 会报错)
else secondInt = (int)((min % minInt) * 60);
// 赋值倒计时秒数的初始值 timeFloat = 60 - secondInt; } private void Update() {
// 倒计时秒数降到 0 以下时,分钟数下降 1
if(60 - timeFloat < 0)
{
// 更新秒数
timeFloat -= 60f; // 分钟数下降 1 minInt--; // 当倒计时为 0 时,调用一个方法 或 切换场景 if (minInt < 0) { // TODO } }
// 累加时间(将倒计时的误差降到最低) timeFloat += Time.deltaTime; // 更新 秒数 secondInt = (int)(60 - timeFloat); counDown.text = minInt.ToString("00") + ":" + secondInt.ToString("00"); } }