Как сделать таймер в Unity - PullRequest
       0

Как сделать таймер в Unity

0 голосов
/ 11 февраля 2019

У меня есть вопрос по моему коду.Теперь я создаю текстовый интерфейс для отображения на экране после столкновения, а также хочу, чтобы текст исчез через 2 секунды, чтобы после другого нового столкновения он мог появиться снова.Итак, как я могу сделать таймер, чтобы получить эту функцию?Большое спасибо!

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

public class CollisionWithPlayer : MonoBehaviour
{
    int score;

    // Start is called before the first frame update
    void Start()
    {
        score = 0;
        GameObject.Find("message").GetComponent<Text>().text ="";
        GameObject.Find("collect").GetComponent<Text>().text = "";
        GameObject.Find("score").GetComponent<Text>().text = "";

    }

    // Update is called once per frame
    void Update()
    {

    }

    void OnCollisionEnter(Collision collision)
    {
        print("Collided with " + collision.collider.gameObject.tag);
        if (collision.collider.gameObject.tag == "pick_me")
        {
            GameObject.Find("collect").GetComponent<Text>().text = "You have collected an object!";
            Destroy(collision.collider.gameObject);
            //yield return new WaitForSeconds(2);
            //Destroy(GameObject.Find("collect"));
            score++;
            GameObject.Find("score").GetComponent<Text>().text = "score = " + score;
            print("Score " + score);

        }
        if (collision.collider.gameObject.name == "end" && score == 4)
        {
            print("Congratulations!");
            GameObject.Find("message").GetComponent<Text>().text = "Congratulations!";
        }
    }
}

В моем коде у меня 4 шарика, принадлежащих «pick_me». И я хочу текст «Вы собрали объект!»появляются в тот момент, когда игрок сталкивается с мячом, затем исчезают через 2 секунды, в следующий раз, когда игрок сталкивается с другим мячом, снова появляется текст.Так что я могу сделать?

1 Ответ

0 голосов
/ 11 февраля 2019

Вы должны использовать сопрограмму с WaitForSeconds .Например:

IEnumerable OnCollisionCoroutine()
{
    // Do stuff here to make the text visible

    yield return new WaitForSeconds(2);

    // Do stuff here to hide the text
}

Затем, при обнаружении столкновения, позвоните:

StartCoroutine(OnCollisionCoroutine());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...