如何在Unity中从Firebase将ui文本值设置为寄存器?

时间:2019-05-13 14:31:13

标签: c# firebase unity3d

我正在使用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

当我运行项目时,它只是在控制台中显示用户名,但文本框尚未更新。

1 个答案:

答案 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;
    }
}