Unity 倒计时的实现

简介: 在 Unity 中实现倒计时功能,主要利用 `Time.deltaTime` 进行精确的时间计算和监控。本文介绍两种常见实现方法:一是通过 `WaitForSeconds(1)` 每秒递减时间,二是基于 `Update()` 函数每帧减去 `Time.deltaTime`。代码中包含详细的注释和示例,需确保挂载 Text 组件以显示倒计时。

在 Unity 中实现倒计时功能,主要基于对时间的精确计算和监控,根据不同的应用场景和需求,可以采用不同的实现方式,以下详细介绍常见的实现原理及示例:
基于 Time.deltaTime 实现倒计时
原理
Time.deltaTime 是 Unity 中的一个内置属性,它代表从上一帧到当前帧所经过的时间(以秒为单位)。利用这个属性,在每一帧中从预设的倒计时总时长里减去 Time.deltaTime,持续更新剩余时间,直到倒计时结束。

里面也是两种方法实现
具体实现代码如下:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 倒计时的实现
/// </summary>
public class CountDownTime : MonoBehaviour
{
    private Text text;
    int Shi;
    int Fen;
    int miao;
    private bool aa;
    public float time;
    // Start is called before the first frame update
    void Start()
    {
        text = this.GetComponent<Text>();
        StartCoroutine("enumerator");

        //Endkisijd();
    }

    public void Endkisijd()
    {           
        aa = true;      
    }
    #region   第一种方法
    IEnumerator enumerator()
    {      
        while (time >= 0)
        {
            Shi = (int)time / 3600;
            Fen = (int)time % 3600 / 60;
            miao = (int)time % 60;
            text.text = string.Format ("{0}:{1}:{2}",Shi,Fen ,miao );
            yield return new WaitForSeconds(1);
            time--;
        }
    }
    #endregion
    // Update is called once per frame
    void Update()
    {
        #region 第二种方法
        /*         
        if (aa)
        {
            Shi = (int)time / 3600;
            Fen = (int)time % 3600 / 60;
            miao = (int)time % 60;
            text.text = string.Format("{0}:{1}:{2}", Shi, Fen, miao);
        }
        if (time > 0)
        {
            time -= Time.deltaTime;
        }
        else
        {
            text.text = string.Format("{0}:{1}:{2}", 00, 00, 00);
            aa = false;
        }      
        */
        #endregion
    }
}

记得创建一个text组件挂载到上面,要不然报错

相关文章
实现计时器和倒计时工具(Unity3D)
今天分享一下如何基于Unity3D做计时器工具,为了方便演示,使用了UGUI的Text,代码简单具有拓展性,然后有什么错误或者意见也欢迎大家给我提出来。微信二维码已经显示在博客主页,有想要沟通学习的,项目外包的都可以加一下。 分享一下我另一篇关于时间计时的文章: 【Unity3D】获取到游戏时间,并显示出来
Unity3D-常用小功能详解,例子(得分变动效果、倒计时)
Unity3D-Demo多个功能方法 本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) ...
1692 0
|
7月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
403 6
|
7月前
|
图形学 缓存 算法
掌握这五大绝招,让您的Unity游戏瞬间加载完毕,从此告别漫长等待,大幅提升玩家首次体验的满意度与留存率!
【8月更文挑战第31天】游戏的加载时间是影响玩家初次体验的关键因素,特别是在移动设备上。本文介绍了几种常见的Unity游戏加载优化方法,包括资源的预加载与异步加载、使用AssetBundles管理动态资源、纹理和模型优化、合理利用缓存系统以及脚本优化。通过具体示例代码展示了如何实现异步加载场景,并提出了针对不同资源的优化策略。综合运用这些技术可以显著缩短加载时间,提升玩家满意度。
700 5
|
6月前
|
测试技术 C# 图形学
掌握Unity调试与测试的终极指南:从内置调试工具到自动化测试框架,全方位保障游戏品质不踩坑,打造流畅游戏体验的必备技能大揭秘!
【9月更文挑战第1天】在开发游戏时,Unity 引擎让创意变为现实。但软件开发中难免遇到 Bug,若不解决,将严重影响用户体验。调试与测试成为确保游戏质量的最后一道防线。本文介绍如何利用 Unity 的调试工具高效排查问题,并通过 Profiler 分析性能瓶颈。此外,Unity Test Framework 支持自动化测试,提高开发效率。结合单元测试与集成测试,确保游戏逻辑正确无误。对于在线游戏,还需进行压力测试以验证服务器稳定性。总之,调试与测试贯穿游戏开发全流程,确保最终作品既好玩又稳定。
337 4
|
6月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
365 3