【问题标题】:TextMesh Pro text will not change via scriptTextMesh Pro 文本不会通过脚本更改
【发布时间】:2018-12-10 02:24:20
【问题描述】:

我似乎无法通过脚本更改我的 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 对象拖到这里,这可能是问题吗?

【问题讨论】:

  • TextMesh 和 TextMeshPro 是两个不同的东西。你能在检查器中向我们展示这个对象的屏幕截图吗?
  • 在上面添加了图片。
  • 在我看来,Countdown 对象是一个预制件。对吗?
  • 嗯,我想知道是不是因为 Countdown 是一个损坏的预制链接?尝试删除预制件的链接并尝试一下? (您可以在顶部的 GameObject 菜单中执行此操作)
  • 不,那是个错误,我已将其改回常规 TextMeshPro 对象,但仍然存在同样的问题。

标签: c# unity3d


【解决方案1】:

问题是您使用的是常规 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 脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 2014-09-16
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多