Как обновить текст в Unity UI - PullRequest
0 голосов
/ 11 октября 2018

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

У меня есть текст, связанный со сценарием в Unity, так что это не проблема.

В начале я объявляю Text UserUpdate и строку для использования в качестве контейнера для текста.

public Text UserUpdate;
public string userUpdate;

При запуске я присваиваю ему значение (пока это работает).

public void Start()
{
    userUpdate = "Create an account or login";
}

Позже я вызываю функции и использую условия для изменения значения userUpdate

public void LoginButtonPressed()
{
    FirebaseAuth.DefaultInstance.SignInWithEmailAndPasswordAsync(EmailAddress.text, Password.text).
        ContinueWith(task =>
        {
            if (task.IsCanceled)
            {
                Debug.LogError("Login was cancelled");
                userUpdate = "Login was cancelled";
                return;
            }

            if(task.IsFaulted)
            {
                Debug.LogError("Error logging in");
                userUpdate = "Error logging in";
                return;
            }

            if(task.IsCompleted)
            {
                Debug.LogFormat("Usermanager: User signed in successfully: {0}", EmailAddress.text);
                userUpdate = "Sign in successful";
                isLoadMainScene = true;
            }


        });

}

Затем в void Update () я присваиваю значение UserUpdate.text

void Update()
{
    UserUpdate.text = userUpdate;
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2018
void OnGUI(){

GUI.Label(new Rect(0,0,0,0),userUpdate);
}

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

Мне также повезло с TMP, зайдите на свою сцену и нажмите add- 3d- TextMeshPro и назовите его как-нибудь как «texty», тогда вы можете сделать texty.Text=

если вы хотите, чтобы это работало как есть, вставьте это в ваш Awake()

UserUpdate = GetComponent<Text>();

, но это будет работать, только если текст прикреплен к тому же объекту, что и этот скрипт

0 голосов
/ 11 октября 2018

Не было ошибок от SignInWithEmailAndPasswordAsync?Возможно, обратный вызов не вызывается, поэтому нет ничего, что бы присвоило значение userUpdate.

Кроме того, вместо того, чтобы всегда присваивать значение UserUpdate.text в Update, вы можете просто поместить это в SignInWithEmailAndPasswordAsync callback или иметьСвойство для установки значения UserUpdate.text всякий раз, когда вы устанавливаете значение userUpdate.

public string UserUpdateProperty
{
    get
    {
        return userUpdate;
    }
    set
    {
        userUpdate = value;
        UpdateUser.text = userUpdate;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...