如何通过脚本修改 UI 文本?

How to modify UI text via script?

一个简单的问题:我正在尝试通过 C# 脚本修改 UI 文本(TextMeshPro,如果有任何区别的话)。我正在使用以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Coins : MonoBehaviour
{
    public Text coins;
    void Start()
    {
        coins = GetComponent<Text>();
    }

    void Update()
    {
        coins.text = "text";
    }
}

我在 Unity 2018 中做过类似的事情(我目前使用的是 Unity 2020.2)并且它在那里工作。 出于某种原因,它在这里不起作用。如果有任何帮助,我将不胜感激。

在 TMP 中更改文本几乎相同,但您需要添加 "using TMPro;" 并更改变量类型。代码应如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class Coins : MonoBehaviour
{
    public TMP_Text coins;
    void Start()
    {
        coins = GetComponent<TextMeshProUGUI>();
    }

    void Update()
    {
        coins.text = "text";
    }
}

您需要引用 tmp 文本组件而不是普通的 Unity 文本组件: 而不是 GetComponent<Text>();GetComponent<TextMeshProUGUI>();

当然别忘了:

using TMPro;

在您的代码之上。

要修改 TextMeshPro 个组件,您必须使用 TMP_Text class。

public class Coins : MonoBehaviour
{
    public TMP_Text coins;
    void Start()
    {
         coins = GetComponent<TMP_Text>();
    }

    void Update()
    {
         coins.text = "text"; //or coins.SetText(“text”);
    }
}