如何更改在 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";
我添加到按钮元素的脚本
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";