如何在Unity中制作一个非UI的倒计时?

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

我想制作一个附着在精灵上的倒计时。倒计时将从10倒计时到零,并且不会附着在Canvas上,所以它不会静止在屏幕上。所有类似这样的教程都是针对UI的,不允许使用3D文本。谁有什么办法可以做到这一点?

c# visual-studio unity3d
1个回答
0
投票

有两种方法可以做到这一点。

  1. 在单独的画布上使用UI元素,设置为 "世界空间"。
  2. 使用TextMesh元素在世界中放置文字的3D网格。

我真的不知道每种方法的优缺点,所以选择对你来说更容易实现的方法,如果你遇到问题,请记住其他方法。

如果你想找一个详细的教程,任何解释如何做弹出伤害数字的方法都是一样的,只是用不同的脚本告诉它要显示什么文字。上有几个不错的教程。榜首.

至于倒计时脚本,相当简单。

//put this script on a GameObject prefab with a TextMesh component, or a canvas element
public class Countdown : MonoBehaviour
{

public TextMesh textComponent; //set this in inspector
public float time;  //This can be set in inspector for this prefab
float timeLeft;
public void OnEnable()
{
    textComponent = GetComponent<TextMesh>();  //in case you forget to set the inspector
    timeLeft = time;
}
private void Update()
{
    timeLeft -= Time.deltaTime;  //subtract how much time passed last frame
    textComponent.text = Mathf.CeilToInt(timeLeft).ToString();  //only show full seconds
    if(timeLeft < 0) { gameObject.SetActive(false); }  //disable this entire gameobject
}
}
© www.soinside.com 2019 - 2024. All rights reserved.