首页 > 解决方案 > TextMesh Pro 文本不会通过脚本更改

问题描述

我似乎无法通过脚本更改我的 TextMeshPro 值。在我的检查器中,我有一个名为 Countdown 的 TextmeshPro 对象。我有一个名为 GameController 的脚本,它附在上面。

然后我的脚本将 Countdown 的字符串值设置为 Hello,但它不起作用。

游戏控制器

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

public class GameController : MonoBehaviour {

    public TextMeshProUGUI Countdown;

    // Use this for initialization
    void Start () {

        Countdown = GetComponent<TextMeshProUGUI> ();
        Countdown.text = "Hello";   
    }

    // Update is called once per frame
    void Update () {

    }
}

在检查器中有一个 TextMesh 字段,但由于某种原因我无法将 CountDown 对象拖到这里,这可能是问题吗?

在此处输入图像描述

标签: c#unity3d

解决方案


问题是您使用的是常规 TextMeshPro 对象,并且在您的代码中您正在寻找 TextMeshProUGUI,这是一个简单的错误。将代码更改为:

public class GameController : MonoBehaviour {

    public TextMeshPro Countdown;

    // Use this for initialization
        void Start () {
    //you shouldnt need to get component the editor should take care of this for you when 
//you drop it since you have the object set to TextMeshPro and not just GameObject
            Countdown = GetComponent<TextMeshPro> ();
            Countdown.text = "Hello";   
        }

        // Update is called once per frame
        void Update () {

        }
    }

制作 TextMeshProUGUI 对象的唯一方法是通过画布添加它。在您的场景中,当您仅添加 TMP 时,它将是您的“倒计时”所在的常规 TMP。你可以知道,因为它使用 TMP 脚本而不是 TMPUGUI 脚本。


推荐阅读