我在Unity中制作bomberman3d。如您所知,原始游戏在每个级别都有倒数计时器。计时器长2分钟。我试图设置计时器,发现一些代码。没用我不明白如何编写计时器代码,尤其是!将计时器放在相机前面顶部的水准仪中,以便任何玩耍的人都能看到它。您能否向我解释所有步骤。我对团结很陌生,但我需要像真实的东西。哦,我用C#
您首先需要一个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
,但其他所有内容都相同。
我希望这不是规定性的。这只是一种实现方式,但是它应该可以满足您的要求并且可以轻松修改。