Jump to content
Unity Insider Forum
Sign in to follow this  
meno

Onclick-Button mit Script erstellen

Recommended Posts

Hallo,
ich habe in Unity einen Button erstellt. Wenn man auf diesen klickt, wird die Funktion Klick ausgeführt. Diese soll einen neuen Button erstellen und ihm die Funktion OnClickTest() zuweisen.
 Der neue Button wird einwandfrei erstellt. Verrückterweise wird aber OnClickTest() beim klicken auf den ersten Button ausgeführt. Klickt man auf den neu erstellten Button kommt die Fehlermeldung:

NullReferenceException: Object reference not set to an instance of an object

using UnityEngine;
using UnityEngine.UI;

public class start2 : MonoBehaviour{

    GameObject button;

    public void Start()
    {    }

    public void Klick(Transform panel)
    {
        GameObject button = new GameObject();

        button.name = "Neuer Button";

        button.AddComponent<RectTransform>();
        button.GetComponent<RectTransform>().sizeDelta = new Vector2(20, 20);
        button.transform.position = new Vector3(100, 200, 100);

        button.transform.SetParent(panel.transform, false);

        button.AddComponent<Image>();
        button.GetComponent<Image>().color = Color.blue;

        button.AddComponent<Button>();        
        button.AddComponent<ScriptAttribut>();
        button.GetComponent<Button>().onClick.AddListener(OnClickTest());
    }

    public UnityEngine.Events.UnityAction OnClickTest()
    {
        print("hallo");
        return null;
    }
}

Bin völlig verwirt. Wieso passiert das?:blink:

Share this post


Link to post
Share on other sites

Nimm mal die () weg, vermutlich übergibt er nicht die Methode, sondern ruft sie auf...

button.GetComponent<Button>().onClick.AddListener(OnClickTest);

und sollte reichen:

 void OnClickTest()
    {
      print("hallo");  
    }  

 

Share this post


Link to post
Share on other sites

Danke!

Wenn ich jetzt den neuen Button drücke wird OnKlickTest ausgeführtDrücke ich ihn aber ein zweites Mal, passiert nichts.

Share this post


Link to post
Share on other sites
int i = 0; 

 void OnClickTest()
    {
        i++;
        print(i);
    }

Hier wird mir bei jedem Klick die Zahl zurückgegeben. Interessant.

Share this post


Link to post
Share on other sites

Hast du vielleicht in der Unity-Console die "Zusammenfassung" aktiviert, dann wird die gleiche Meldung nur 1x ausgegeben ...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×