我正在尝试在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;
}
答案 0 :(得分:2)
SignInWithEmailAndPasswordAsync
没有错误吗?也许回调没有被调用,所以没有为UserUpdate分配值。
除了在Update中始终分配UserUpdate.text的值之外,您还可以将其放在SignInWithEmailAndPasswordAsync
回调中,或者只要设置userUpdate的值,就可以通过属性来设置UserUpdate.text的值。
public string UserUpdateProperty
{
get
{
return userUpdate;
}
set
{
userUpdate = value;
UpdateUser.text = userUpdate;
}
}
答案 1 :(得分:0)
texty.Text=
添加此方法,将rect调整为与画布上的文本相同的设置。删除您的文本。这会起作用。
ive也很幸运,TMP,到您的场景并单击add- 3d- TextMeshPro,并将其命名为“ texty”,然后您就可以Awake()
如果您希望它按原样工作,请将其放入UserUpdate = GetComponent<Text>();
{{1}}
但这仅在文本与此脚本附加到同一对象上时有效