我如何在unity3d中为该级别设置(代码和ui)可视时间限制?

问题描述 投票:-1回答:1

我在Unity中制作bomberman3d。如您所知,原始游戏在每个级别都有倒数计时器。计时器长2分钟。我试图设置计时器,发现一些代码。没用我不明白如何编写计时器代码,尤其是!将计时器放在相机前面顶部的水准仪中,以便任何玩耍的人都能看到它。您能否向我解释所有步骤。我对团结很陌生,但我需要像真实的东西。哦,我用C#

c# unity3d timer countdown
1个回答
0
投票

您首先需要一个UI画布。然后在层次结构的画布下创建一个Text对象。

在代码中,您需要包括UnityEngine.UI命名空间,以便能够在代码中使用文本对象。设置一个公共变量,您可以手动更改,以秒为单位选择时间(如果您不希望以秒为单位,那么查看如何将其修改为分钟应该是微不足道的)。您还需要一个变量来跟踪经过的时间。

在更新时,我们从timeLeft变量中删除了deltaTime(帧之间的时间)。如果该值小于零,则时间用完了。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Countdown : MonoBehaviour
{
    public float TimeLimit;

    private float timeLeft;
    private Text output;

    void Start()
    {
        timeLeft = TimeLimit;
    }

    // Update is called once per frame
    void Update()
    {
        timeLeft -= Time.deltaTime;
        output.text = timeLeft.ToString();

        if(timeLeft<0)
        {
            //Do something here like force restart or show a failure screen
        }
    }
}

与标准Text对象相比,更好看的替代方法是TextMeshPro文本对象(在下拉菜单中的文本正下方,用于在编辑器中创建一个文本对象)。它可以更好地缩放到不同的分辨率。要在代码中使用该代码而不是标准Text对象,您需要在文件顶部包含using TMPro并将private text output替换为private TextMeshProUGUI output,但其他所有内容都相同。

我希望这不是规定性的。这只是一种实现方式,但是它应该可以满足您的要求并且可以轻松修改。

© www.soinside.com 2019 - 2024. All rights reserved.