我正在使用Unity和Firebase在一个学校项目中工作,我需要在文本框中显示当前用户的用户名。
我已经从Firebase获取数据,但是当 我尝试将userNameText的文本设置为它,什么也没发生。
这是我的代码:
变量:
DecimalFormat df = new DecimalFormat("0.0##");
System.out.println(df.format(2.456))
System.out.println(df.format(2.1));
初始化:
2,456 -> Good
2,100 -> Not good
GetUserData():
2,456 -> Good
2,1 -> Good
3,3453456345234 -> Good
当我运行项目时,它只是在控制台中显示用户名,但文本框尚未更新。
答案 0 :(得分:0)
您将需要将void方法移至IEnumerator并将引用设置为变量。
module Satellite(clk, rs, rw, en,dat,rst_n,IR,led_cs,led_db)
module lcd(clk, rs, rw, en,dat)
input clk;
output [7:0] dat;
output rs,rw,en;
然后在您的启动方法中,您可以启动协程。我的文本框消失时也遇到了同样的问题。如果放置了一些日志语句,则可以看到在对Firebase进行调用之前,函数的第一次读取是通过第一次,并将文本设置为空字符串。
IEnumerator GetUserData(){
var getTask = reference.Child("users").Child(PlayerPrefs.GetString("userUID")).GetValueAsync();
yield return new WaitUntil(() => getTask.IsCompleted || getTask.IsFaulted);
if (getTask.IsCompleted)
{
Dictionary<string, object> results = (Dictionary<string, object>)task.Result.Value;
userName= (string)results["userName"];
Debug.Log(userName);
userNameText.text = userName;
}
}