如何在Unity UI中更新文本

时间:2018-10-10 22:36:20

标签: c# unity3d

我正在尝试在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;
}

2 个答案:

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

但这仅在文本与此脚本附加到同一对象上时有效