首页 > 解决方案 > 如何在 Unity 中更改 TextMeshPro 对象的文本?

问题描述

我正在尝试更新 TextMeshPro 对象以显示游戏中灵敏度滑块的值。但是,它不会更新!

我试过查找它,但几乎我遵循的每个教程都没有帮助。

这是“PlayerScript”脚本,它获取滑块上的值(此函数):

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

public class PlayerScript : MonoBehaviour
{

    // Update is called once per frame
    public float moveSpeed = 600f;
    public static float publicSensitivity;

    float movement = 0f;
    void Update()
    {
        movement = Input.GetAxisRaw("Horizontal");
    }

    public void SetSensitivity(float sensitivity)
    {
        Debug.Log(sensitivity);
        moveSpeed = sensitivity * 12;
        publicSensitivity = sensitivity;

    }


    void FixedUpdate()
    {
        transform.RotateAround(Vector3.zero, Vector3.forward, movement * Time.fixedDeltaTime * -moveSpeed);
    }
}

这是'ChangePercentage'脚本,用于更改TextMeshPro文本对象以反映滑块上的值(不更改。默认情况下,对象读取“foo”。当我打开选项菜单时,它更改为读取0%,但只有一次。这意味着它必须更新但不是连续的):

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

public class ChangePercentage : MonoBehaviour
{

    public TextMeshProUGUI self;
    void Update()
    {
        self.text = (PlayerScript.publicSensitivity).ToString() + "%";
    }
}

提前致谢!

标签: c#unity3d

解决方案


如何/在哪里调用 SetSensitivity 方法?我建议使用滑块对象,然后将灵敏度设置为 slider.value 。例子:

unsing UnityEngine.UI; 
public slider sensitivity_slider;
public static float sensitivity;

public void Update(){
sensitivity = sensitivity_slider.value;
}

您还可以制作一个直接显示滑块值的脚本。

希望我能帮上忙,对不起我的英语不好。


推荐阅读