2016-09-22 246 views
-1

enter image description here我想在Unity中單擊它時更改按鈕的文本。我是C#的新手。請幫助我!如何在UNITY中單擊它時更改按鈕的文本?

,我加入到我的按鈕元素

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

+0

您是否收到任何錯誤後? –

+0

您需要找到Button組件,點擊節點擊+並拖動腳本到插槽中。然後你可以在下拉菜單中找到該方法。我想你錯過了。 – Everts

+0

我已經嘗試了你提到的@Everts,但它沒有改變。 –

回答

1

你的問題來自於你的文字和按鈕的設置指定的文本和按鈕的引用。

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

謝謝Evert!你救了我的一天!你總是幫我找到解決方案:)非常感謝! –

+0

我添加了顏色變化。請注意,該參數不再是Text組件,而是父GameObject。在你的情況下,圖片上突出顯示的Button對象。 – Everts

+0

謝謝你一噸Evert! –

0

您缺少公開關於Text屬性的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!"; 
    } 

} 
+0

非常感謝您的回答。但我得到下面的錯誤,NullReferenceException:對象引用未設置爲對象的實例 Buttontextchange.clicked()(在Assets/Buttontextchange.cs:17)@Paradox Forge –

+0

這將意味着你沒有分配「BuyText 「在檢查員中變量。我已經改編了劇本,所以你不必這樣做。 –

+0

非常感謝!它現在工作:) –

0

只是這樣做click事件 Button.GetComponentInChildren(Text).text = "Button Clicked";

相關問題