我想在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!";
}
}
答案 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";