【问题标题】:How to modify UI text via script?如何通过脚本修改 UI 文本?
【发布时间】:2021-10-03 18:42:06
【问题描述】:

一个简单的问题:我正在尝试通过 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)并且它在那里工作。 出于某种原因,它在这里不起作用。我将不胜感激。

【问题讨论】:

  • TextMeshPro if that makes any difference .. 这与UnityEngine.UI.Text 是完全不同的类型,所以.. 是的,它有所不同^^ 另外请更好地描述doesn't work 的确切含义

标签: c# unity3d text


【解决方案1】:

在 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";
    }
}

【讨论】:

    【解决方案2】:

    要修改TextMeshPro组件,你必须使用TMP_Text类。

    public class Coins : MonoBehaviour
    {
        public TMP_Text coins;
        void Start()
        {
             coins = GetComponent<TMP_Text>();
        }
    
        void Update()
        {
             coins.text = "text"; //or coins.SetText(“text”);
        }
    }
    

    【讨论】:

      【解决方案3】:

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

      当然不要忘记:

      using TMPro;

      在您的代码之上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        相关资源
        最近更新 更多