2016-03-28 5 views
0

Scheint hat, dass aus irgendwelchen Gründen, Unity-Benutzeroberfläche nicht Funktionen mag haben, die Standardparameter verwendenUI erkennt keine Funktionen, die Standardparameter

public void PrintButtonName(GameObject go, string button_pressed = "none") 
{ 
    if (button_pressed != "none") 
     Debug.Log(go.name); 

} 

Dies wird nicht in eine Schaltfläche klicken Ereignis angezeigt werden, der Editor. Wenn ich den Standardwert entferne, kann der Editor die Funktion wieder "sehen" und Sie können sie verwenden.

Warum ist das? Ist das ein Fehler? Ich muss einen optionalen Parameter verwenden, aber ich kann nicht, da das onClick diese Funktion mit dem Standard nicht sehen wird.

Antwort

0

Zuweisen von UI Callback-Funktionen von Unity Editor ist sehr begrenzt. Wenn Unity herauskam, konnten Sie keine Funktion mit mehr als Parameter vom Editor aufrufen. Ich denke immer noch, dass diese Einschränkung immer noch gilt.

Die Lösung besteht darin, dies über Code zu tun.

public Button newbiezButton; //Drag button to here from Editor 


void OnEnable()(){ 
//Add listener 
newbiezButton.onClick.AddListener(() => PrintButtonName(yourGameObj, yourString)); 
} 

public void PrintButtonName(GameObject go, string button_pressed = "none") 
{ 
    if (button_pressed != "none") 
     Debug.Log(go.name); 

} 

public void OnDisable(){ 
//Remove listener 
newbiezButton.onClick.RemoveAllListeners(); 
} 
+0

Danke für die Antwort. Es ist also eine Einschränkung des Systems selbst. Es ist wirklich enttäuschend, dass Sie gezwungen sind, einen Parameter zu verwenden, es sei denn, Sie schreiben eine andere Funktion. Meistens wird dadurch der Code komplexer, was wiederum die Chancen erhöht, etwas zu vermasseln. Danke nochmal für die Erklärung! –

+0

Kein Problem. Ich habe bemerkt, dass Sie Editor für Ihre Rückruffunktionen in Ihren anderen Fragen verwenden. ** Switch ** zu Code, da es keine Einschränkungen hat. Editor hat viele Einschränkungen, auf die Sie wahrscheinlich stoßen werden, die ich hier nicht erwähnt habe. – Programmer

Verwandte Themen