Как сделать обратный отсчет без пользовательского интерфейса в Unity? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь сделать обратный отсчет привязанного к спрайту. Обратный отсчет будет отсчитываться от 10 до нуля и не будет привязан к холсту, поэтому на экране не будет состояния c. Все учебные пособия для чего-то подобного предназначены для пользовательского интерфейса и не поддерживают трехмерный текст. У кого-нибудь есть идеи, как это сделать?

1 Ответ

0 голосов
/ 25 мая 2020

Есть два способа сделать это:

  1. Использовать элементы пользовательского интерфейса на отдельном холсте, установленном в World Space
  2. Используйте элемент TextMe sh, чтобы поместить 3D-меня sh текста в мире

Я действительно не знаю плюсов и минусов каждого подхода, поэтому go с тем, что вам проще реализовать, и помните о другом, если вы запустите в проблемы.

Если вы ищете подробный учебник, все, что объясняет, как делать номера повреждений во всплывающих окнах, будет тем же методом, только с другим скриптом, указывающим, какой текст отображать. Есть несколько хороших руководств в вверху результатов YouTube .

Что касается скрипта обратного отсчета, он довольно прост.

//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
}
}
...