[英]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.