Ich habe ein Problem mit der Rückruffunktion in C# Skript in Unity.Unity3d führen einen Rückruf von mehreren Skripten aus
In Corona SDK, wenn Sie einen Rückruf durchführen möchten, müssen Sie es nur als Argument übergeben und dann an der richtigen Stelle aufrufen.
local function boom()
print("booom!!!")
end
local function bang()
print("baaaang!!!")
end
local function selector(var, func1, func2)
if var > 0 then
func1()
else
func2()
end
end
selector(5, boom, bang)
selector(-12, boom, bang)
Und ich bekomme:
booom!!!
baaaang!!!
Was ist richtig.
Aber wenn ich versuche, es in C# Skript in Unity zu implementieren, habe ich viele Probleme. Zuallererst reicht es nicht, nur einen Parameter zu übergeben. Sie müssen den Typ der Variablen in der Funktion selector()
angeben. Also muss ich den Klassennamen für func1
und func2
angeben. Aber wenn ich es aus mehreren Skripten aufrufen und verschiedene Callback-Funktionen übergeben möchte? Dann kann ich die Klasse nicht als Typ angeben.
Ich fand einige Tutorials, aber keine von ihnen löste mein Problem. Sie alle beschreiben, wie es innerhalb einer Klasse zu tun, oder nur aus einer vordefinierten Klasse
Es funktioniert! Es funktioniert wirklich! So "Action" war alles über: D – Lukis
BTW. Wie stelle ich 'Action func2' als optional ein? "Aktion? func2 = null' funktioniert nicht. – Lukis
Warum funktioniert es nicht? In der Regel ist es hilfreich, eine Fehlermeldung oder eine Erklärung für das Verhalten zu geben, das Sie für nicht funktionsfähig halten. Ich nehme an, Sie erhalten eine NullReferenceException, wenn Sie versuchen, func2() aufzurufen. Das ist zu erwarten, denn Sie können nicht null nennen. Überprüfen Sie, ob es vor dem Aufruf null ist, und rufen Sie es nur an, wenn dies nicht der Fall ist. –