簡體   English   中英

如何在Unity UI中更新文本

[英]How to update text in Unity UI

我正在嘗試在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;
}

SignInWithEmailAndPasswordAsync是否沒有錯誤? 也許沒有調用回調,所以沒有將值分配給userUpdate的事情。

另外,不必總是在Update中分配UserUpdate.text的值,而是可以將其放在SignInWithEmailAndPasswordAsync回調中,或者在每次設置userUpdate的值時都具有一個屬性來設置UserUpdate.text的值。

public string UserUpdateProperty
{
    get
    {
        return userUpdate;
    }
    set
    {
        userUpdate = value;
        UpdateUser.text = userUpdate;
    }
}
void OnGUI(){

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

添加此方法,將rect調整為與畫布上的文本相同的設置。 刪除您的文本。 這將起作用。

我也對TMP感到好運,轉到您的場景並單擊add-3d- TextMeshPro,並將其命名為“ texty”,然后就可以執行texty.Text=

如果您希望它按原樣工作,請將其放在您的Awake()

UserUpdate = GetComponent<Text>();

但這僅在文本附加到與此腳本相同的對象上時有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM