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

时间:2016-09-22 15:07:39

标签: c# unity3d augmented-reality vuforia

enter image description here我想在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!";

}
}

我已经尝试了很多答案,但它不适合我!我在画布里面有一个按钮。非常感激您的帮忙 ! enter image description here

3 个答案:

答案 0 :(得分:2)

您的问题来自您的文字和按钮的设置。

Buttontextchange组件位于Buttontext对象上。我可以在图片上看到物体没有孩子。但是你跑了:

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

这是你可能收到错误的地方。 Text对象位于Button对象下,因此您可以在onClick调用中传递它。

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

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

编辑:用户想要点击时更改按钮颜色:

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

答案 1 :(得分:0)

您缺少Text属性上的 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!";
    }

}

答案 2 :(得分:0)

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