如何更改在 UNITY 中单击按钮时的文本?

How to change the text of a button on clicking it in UNITY?

我想在 Unity 中更改按钮的文本。我是 C# 的新手。请帮帮我!

我添加到按钮元素的脚本

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

public class Buttontextchange : MonoBehaviour {

Text Buy;


    // Use this for initialization
    void Start () {
     Buy = transform.FindChild("Text").GetComponent<Text>();
    }

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

    }

public void clicked()
{
Debug.Log("Button Buy Clicked!");
Buy.text = "i am a button!";

}
}

我已经尝试了很多答案,但都不适合我!我在 canvas 里面有按钮。非常感激您的帮忙 !

您在文本 属性 上缺少 public c# 关键字。我稍微更改了您的脚本,以便您可以从 Unity 编辑器分配文本和按钮引用

public class Buttontextchange : MonoBehaviour
{

    public Button BuyButton;
    public Text BuyText;

    void Start()
    {
        BuyButton.onClick.AddListener(OnButtonClicked);
        if (BuyText == null)
            BuyText = BuyButton.GetComponentInChildren<Text>();
    }

    public void OnButtonClicked()
    {
        Debug.Log("Button Buy Clicked!");
        BuyText.text = "i am a button!";
    }

}

您的问题出在文本和按钮的设置上。

Buttontextchange 组件在 Buttontext object 上。我可以在图片上看到 object 没有 child。但是你运行:

void Start () {
    Buy = transform.FindChild("Text").GetComponent<Text>();
}

这可能是您遇到错误的地方。文本 object 在按钮 object 下,因此您可以在 onClick 调用中传递它。

public class Buttontextchange : MonoBehaviour 
{
    public void clicked(Text textRef)
    {
        Debug.Log("Button Buy Clicked!");
        textRef.text = "i am a button!";
    }
}

然后在检查器中将文本 object 拖到参数槽中。

编辑:用户希望在点击时更改按钮颜色:

public class Buttontextchange : MonoBehaviour 
{
    public void clicked(Gameobject buttonObj)
    {
        Debug.Log("Button Buy Clicked!");
        Text text = buttonObj.GetComponentInChildren<Text>(true);
        if(text != null){
            textRef.text = "i am a button!";´
        }
        Image image = buttonObj.GetComponent<Image>();
        if(image != null){
            image.color = newColor; 
        }
    }
}

在单击事件后执行此操作 Button.GetComponentInChildren(Text).text = "Button Clicked";