Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Skripting in Unity Grundkurs

Verzögerung mit Invoke

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Es kann sein, dass Sie gewisse Funktionen nicht sofort, sondern mit einer Verzögerung ausführen möchten. Falls Sie noch nicht wissen wie man das macht, ist dieses Video genau richtig.
04:29

Transkript

Wie Sie Funktionen und Automatismen mit Verzögerung ausführen können, lernen Sie in diesem Video. Wir haben hier schon mal etwas vorbereitet, und das ist ein leeres GameObject, einfach unser InvokeController hier mit einem Script, und dem Cylinder rechts daneben. Da ist nichts weiter dran besonders, das ist einfach nur ein normales 3D-Objekt. Auf dem InvokeController liegt, wie gesagt das Script, und das schauen wir uns jetzt auch direkt an. Und das ist ein komplett normales, leeres, gerade neu erstelltes Script, bis auf diese Zeile hier oben. Hier habe ich einfach schon mal eine Referenz hergestellt, und zwar auf unseren Cylinder. Dafür habe ich den Cylinder einfach in unser Fach sozusagen reingezogen, und das Ganze ist ein GameObject. Um eine Funktion, die wir selber geschrieben haben, verzögert ausführen zu lassen, benötigen wir die Funktion Invoke. Das Schlüsselwort, beziehungsweise die Funktion Invoke, benötigt aber etwas von uns. Denn hier sagen wir nur, okay, ab diesem Zeitpunkt möchte ich eine Funktion verzögert ausführen lassen, und genau das macht Invoke. Da brauchen wir natürlich zwei Sachen für, welche Funktionen sollen wir denn ausführen, und um wie viel sollen wir die verzögern? Also braucht Invoke, wenn wir da mit dem Mauszeiger etwas länger drüber verharren, drei Sachen, wir sehen es, string, methodName und float time. Okay, dafür müssen wir natürlich erst mal eine Funktion haben, die irgendetwas macht. Ich schreibe hier jetzt also mal, einfach mal void MoveCyl, und dann sagen wir, wir bewegen den Cylinder um ein oder eine Einheit weiter nach rechts. Das machen wir mal schnell, cylinder.transform.position, damit greifen wir ja auf die Position zu, = new Vector3, denn Positionen sind immer in Vector3 gespeichert, und wir setzen ihn jetzt einfach mal, zum Beispiel auf 20, 0, 0, repräsentiert durch x, y und z. Das Ganze finalisieren wir mit einem Semikolon, und soweit ist diese MoveCyl, Move Cylinder-Funktion okay. Könnte man auch minimieren, da stimmt ja alles. Invoke müssen wir diese Funktion jetzt noch mitgeben, wir sagen ihm also hier, ich habe da jetzt eine Funktion, genau die sollst du ausführen, aber als string. Und bei Strings kommen die Anführungszeichen wieder zum Tragen, und dann kopieren wir uns einfach den Funktionsnamen hier unten, fügen ihn ein, und haben unser erstes Element für die Invoke-Funktion schon erledigt. Als zweites benötigen wir jetzt noch die Zeit, die gewartet werden soll, bis diese Funktion denn wirklich ausgeführt wird. Sagen wir mal 3. Ja, was bedeutet diese 3? Das sind 3 Sekunden. Hier, wir sehen es ist ge-highlightet rechts, float time, da steht jetzt nicht wirklich viel, aber hier in dem Fall sind es 3 Sekunden. Also, bei der Initialisierung im Start geht Invoke her und sucht nach der Funktion, die genau so heißt. Er wird diese finden, und dann sagt er, Okay, dann warte ich doch mal 3 Sekunden, und dann wird das hier ausgeführt. So weit so gut, so weit zur Theorie, gucken wir in Unity, ob das auch wirklich passiert. Ich zoome mal etwas raus und ziehe die Game View hier runter, und dann schauen wir doch einfach mal, der Cylinder ist zur Zeit hier irgendwie an dieser Position, das heißt, er wird nach hier verschoben, weil wir ihn ja an 20, 0, 0 setzen, und dann starten wir doch einfach mal das Spiel. Jetzt rechnen wir 21, 22, 23, zack! Und wo ist unser Cylinder, ich finde ihn gar nicht wieder, aber er ist an 20, 0, 0. Also, rekapitulieren wir nochmal in Visual Studio, mit dem Schlüsselwort, mit der Funktion Invoke, von uns selbst geschriebene Funktionen, unseren MoveCyl, verzögert ausführen lassen. Dazu benötigen wir lediglich den Namen der Funktion, und wie lange wir das Ganze denn gerne verzögern möchten.

Skripting in Unity Grundkurs

Greifen Sie mithilfe von C#-Skripts dynamisch in Ihr Unity-Projekt ein. Auch Programmier-Neulinge lernen Schritt für Schritt den Einstieg ins Skripting.

4 Std. 50 min (40 Videos)
Super!!!
Valentin W.

Ich muss sagen ich bin wirklich sehr erfreut über dieses Video Training. Du hast das alles sehr ausführlich beschrieben. Top Tonqualität und schön ruhig eingesprochen. Ich hoffe sehr das du hier weitere Trainings bereitstellen wirst. :) Gruß, Valentin.

 

Anleitung für Unity 5-Nutzer:

  • Schritt 1: Projekt in Unity 5 öffnen und die Meldung bestätigen, dass das Projekt ein Upgrade bekommt.
  • Schritt 2: Wenn die Meldung kommt, dass die API upgedatet werden muss, diese auch bestätigen

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!