2017-05-07 1 views
2

Ich mag eine einfache Funktion als Parameter in der Einheit, so etwas wie diese (in C#) erstellen:Funktion in Einklang mit() => func

Invoke((() => { alarm = true; }), 3); 

aber das funktioniert nicht in der Einheit, es sagt: Sie können Lambda-Ausdrücke nicht in Strings konvertieren, weil invoke eine Zeichenfolge benötigt. Irgendeine Lösungsmöglichkeit?

+0

Für eine alternative, möglicherweise sauberere Lösung (ohne Reflektion), könnte man: 'IEnumerator SetAlarm() {yi Feld zurückgeben neue WaitForSeconds (3.0f); Alarm = wahr; } 'und führe es mit' StartCoroutine (SetAlarm()) 'aus. –

Antwort

1

Lesen Sie darüber, Invoke dauert eine string und float. Es verwendet wahrscheinlich die darunter liegende Reflektion, also möchte es einen String-Namen einer Methode, die später aufgerufen wird. Dies würde bedeuten, dass Sie nicht einen Delegaten oder Lambda passieren kann, haben aber eine benannte Methode zu verwenden:

Invoke("SetAlarm", 3); 

... 

void SetAlarm() { 
    alarm = true; 
} 

See:

Verwandte Themen