meno Geschrieben 5. März 2018 Melden Share Geschrieben 5. März 2018 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? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 5. März 2018 Melden Share Geschrieben 5. März 2018 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"); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
meno Geschrieben 5. März 2018 Autor Melden Share Geschrieben 5. März 2018 Danke! Wenn ich jetzt den neuen Button drücke wird OnKlickTest ausgeführt. Drücke ich ihn aber ein zweites Mal, passiert nichts. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
meno Geschrieben 5. März 2018 Autor Melden Share Geschrieben 5. März 2018 int i = 0; void OnClickTest() { i++; print(i); } Hier wird mir bei jedem Klick die Zahl zurückgegeben. Interessant. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 5. März 2018 Melden Share Geschrieben 5. März 2018 Hast du vielleicht in der Unity-Console die "Zusammenfassung" aktiviert, dann wird die gleiche Meldung nur 1x ausgegeben ... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Top-SecreT Geschrieben 15. März 2018 Melden Share Geschrieben 15. März 2018 Der Collapse Befehl von Unity hat mich vor 2 Tagen einen Viertel Tag meines Lebens gekostet Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 15. März 2018 Melden Share Geschrieben 15. März 2018 Kann passieren man sollte sich nie auf Debugausgaben verlassen ^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.