Создайте текстовый интерфейс на несколько секунд в Unity - PullRequest
0 голосов
/ 18 ноября 2018

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

У меня есть предмет, который, когда игрок взаимодействует с ним, выполняет это:

void Update ()
{
     if (isPlayerNear && Input.GetKeyDown(KeyCode.E) && Avatar.strenghtAttribute >= 2f)
    {
        levelUp.LevelUp();
        Destroy(gameObject);
    } 

Моя функция повышения уровня в основном такова:

public void LevelUp()
{
     playerLevelText.text = ("You have gained a level!");
     strenghtAttribute++;
     intellectAttribute++;
     playerLevel++;
}

Я пытаюсь выяснить, как заставить playerLevelText.Text появиться на экране, но появиться только на несколько секунд, и я не могу понять, как заставить это работать. Будет ли кто-нибудь достаточно любезен, чтобы помочь мне?

1 Ответ

0 голосов
/ 18 ноября 2018

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

void Update ()
{
    if (isPlayerNear && Input.GetKeyDown(KeyCode.E) && Avatar.strenghtAttribute >= 2f)
    {
        levelUp.InitializeLevelUp());
        Destroy(gameObject);
    } 

Поскольку вы уничтожаете игровой объект, вызывающий сопрограмму, сопрограмма остановится.Обходной путь - вызвать обычную функцию в вашем другом сценарии, которая затем вызывает сопрограмму, поэтому выполнение остается в пределах одного сценария (возможно, есть более чистый способ сделать это).

public void InitializeLevelUp()
{
    StartCoroutine(LevelUp());
}
public IEnumerator LevelUp()
{
     playerLevelText.text = ("You have gained a level!");
     strenghtAttribute++;
     intellectAttribute++;
     playerLevel++;
     yield return new WaitForSeconds(2f);
     playerLevelText.text = "";
     //alternatively, set the text object inactive   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...