C# 如何在Unity UI中更新文本
我试图在Unity中显示一个文本字符串,它会更新以显示正在发生的事情的日志。现在我的代码没有任何错误,并且加载了初始消息,但是没有更新 我确实将文本链接到Unity中的脚本,所以这不是问题所在 在开始时,我声明Text UserUpdate和一个字符串作为文本的容器C# 如何在Unity UI中更新文本,c#,unity3d,C#,Unity3d,我试图在Unity中显示一个文本字符串,它会更新以显示正在发生的事情的日志。现在我的代码没有任何错误,并且加载了初始消息,但是没有更新 我确实将文本链接到Unity中的脚本,所以这不是问题所在 在开始时,我声明Text UserUpdate和一个字符串作为文本的容器 public Text UserUpdate; public string userUpdate; 在start中,我给它赋值(到目前为止这是有效的) 稍后我调用函数并使用条件来更改userUpdate的值 public void
public Text UserUpdate;
public string userUpdate;
在start中,我给它赋值(到目前为止这是有效的)
稍后我调用函数并使用条件来更改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;
}
使用Email和PasswordAsync登录时是否没有错误?可能回调没有被调用,因此没有为userUpdate赋值
public string UserUpdateProperty
{
get
{
return userUpdate;
}
set
{
userUpdate = value;
UpdateUser.text = userUpdate;
}
}
另外,您也可以将UserUpdate.text的值放入SignInWithEmailAndPasswordAsync
回调中,或者在设置UserUpdate的值时,使用一个属性来设置UserUpdate.text的值,而不是始终在Update中分配UserUpdate.text的值
public string UserUpdateProperty
{
get
{
return userUpdate;
}
set
{
userUpdate = value;
UpdateUser.text = userUpdate;
}
}
添加此方法后,将rect调整为与画布上的文本相同的设置。删除你的文本。这会奏效的
我在TMP上也很走运,去你的场景,点击add-3d-TextMeshPro,给它起个类似“texty”的名字,然后你就可以做texty.Text=
如果希望它按原样工作,请将其放入Awake()
UserUpdate=GetComponent()代码>
但是,只有当文本附加到与此脚本相同的对象时,这才起作用我认为您应该将其重构为。将Debug.Log(UserUpdate.text)
放入Update
功能中,然后查看控制台选项卡中是否有任何内容。顺便问一下,您是否在LoginButtonPressed
函数中看到了Debug.LogError
日志?这是目前为止最好的答案
void OnGUI(){
GUI.Label(new Rect(0,0,0,0),userUpdate);
}