Unity3D_UGUI倒计时_比较精准的倒计时

可能倒计时的功能太简单了,没有找到关于倒计时的博客参考,所以本人自己写了倒计时的功能,希望能帮助做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)]
   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 会报错)
       if (minInt == 0) secondInt = (int)(min * 60);
       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");
    }
}
复制代码

 

posted on   考拉宝贝  阅读(1041)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示