Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Skripting in Unity Grundkurs

GameObjects aktivieren/deaktivieren

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Auch ganze Objekte lassen sich per Skript aus- und wieder einschalten. Sehen Sie hier, wie Sie dabei vorgehen müssen.
06:30

Transkript

In diesem Video schauen wir uns gemeinsam an, wie wir Skripts dazu bewegen können, dass sie ganze Objekte zur Laufzeit deaktivieren und aktivieren können. Das Ganze soll also dynamisch ablaufen, und in etwa dem entsprechen, was wir hier innerhalb von Unity mit der Checkbox ganz oben im Inspektor tun. Ich stelle mal eine Laufzeit her, also das bedeutet, ich gehe mal in den Playmode, die Anwendung läuft, und unser Objekt, unser sich drehendes TurningObject dreht sich. Was wir jetzt dynamisch machen wollen, ist folgendes, wir klicken hier und deaktivieren damit das gesamte Objekt, mit all seinen Komponenten und all seinen Eigenschaften. Wir können es auch wieder aktivieren, und das kucken wir uns jetzt im Skript an. Dazu öffne ich nochmal den Ring-Turner, und hier haben wir die Aktivierung von Komponenten. Sehr ähnlich ist die Deaktivierung bezieungsweise Aktivierung von ganzen Objekten. Wenn wir die Deaktivierung beziehungsweise Aktivierung von genau dem Objekt bewerkstelligen wollen, auf dem das jetzige Skript liegt, geht das relativ einfach. Hier können wir einfach hergehen, und das Schlüsselwort gameObject benutzen, da bitte darauf achten, dass das klein geschrieben ist am Anfang, und hier die Funktion SetActive benutzen. Hier eine runde Klammer auf, und dann kommt in diese runden Klammern möchte ich es aktivieren oder deaktivieren, repräsentiert durch die beiden Worte true oder false. true für "Ja, ich möchte es aktivieren", und false für "Nein, bitte deaktiviere es mir". Und diese eine Zeile reicht in dem Fall aus, um genau das Objekt zu deaktivieren, auf dem das Skript RingTurner liegt. Zur Zeit ist das nur unser Turning Object, würde ich RingTurner auf andere Objekte hier legen, würde dieser Befehl dort genauso ausgeführt werden. Wir schauen uns zunächst an, was passiert, dazu kommentiere ich diese Wartezeilen aus, und in Unity schauen wir, was passiert. Noch bevor das Turning Object anfangen kann, sich zu turnen, also zu drehen, ist das gesamte Objekt - wir sehen es hier oben in der Checkbox im Inspektor - bereits deaktiviert. Wenn wir jetzt folgendes tun: gameObject.SetActive(true); in Start, und per Hand das Objekt vorher deaktivieren, werden Sie sehen, dass sich nichts tut. Das liegt daran, dass deaktivierte Objekte nicht berechnet werden, und auch nicht ihre Komponenten. Das heißt, ein deaktiviertes Objekt mag zwar das Skript haben, was es eigentlich wiederum aktivieren soll, aber da das Objekt nun mal deaktiviert ist, werden überhaupt keine Berechnungen angestellt, und dann wird das hier auch nicht ausgeführt. Darauf muss man also achten. Auch hier kann ich natürlich wieder mit externen Objekten arbeiten, und wiederum von einem dritten Objekt sagen, liebe Objekte, deaktiviert euch doch mal! Nehmen wir nochmal unser RemoteObject hier oben. Hier haben wir eine dynamische Referenz hergestellt vom Typ GameObject, also wir haben dafür gesorgt, dass unser Skript RingTurner ein Fach sozusagen bekommt, wo wir Dinge zuweisen können, hier ist zur Zeit unsere Player_Box zugewiesen, also - dieses Objekt, und über unseren RingTurner sagen wir jetzt, wir wollen nicht das Objekt deaktivieren, auf dem RingTurner liegt, sondern wir wollen unser RemoteOBJ deaktivieren. Wir können also jetzt ganz einfach RemoteOBJ.SetActive(false) benutzen, und was passieren wird, ist folgendes, das Remote-Object, was wir dynamisch zugewiesen haben, wird deaktiviert. Hier ist eine Besonderheit zu beachten. Dieser Befehl funktioniert nur so einfach, da wir hier direkt (Remote-Object) auf ein GameObject zugreifen. Und nur GameObject bietet uns die Funktion SetActive. Ich zeig das mal ganz einfach an einem Beispiel, tauschen wir das GameObject gegen ein Transform aus, sagen also: "Nein, das Fach, was wir hier vorbereiten, empfängt jetzt keine GameObjects mehr, sondern nur noch Transform-Sachen, beziehungsweise Komponenten, wird hier direkt dieser Befehl rot unterstrichelt, weil Unity uns sagt, "Moment, das ist ein Transform, da kenne ich diese Funktion überhaupt nicht. Wir müssen jetzt mit dem Axis-Modifier also dafür sorgen, dass wir vom Transform weggehen hin zu einem GameObject. Wir müssen wieder Ebenen wechseln. Was wir also tun, ist, RemoteObject, jetzt noch im Transform, .GameObject hinzuschreiben, damit wechseln wir die Komponente, weg von der Box hier, von der Transform-Komponente, wir waren vorher ja hier, wieder zum eigentlichen GameObject, also zum Grundobjekt, und dann können wir auch wieder die Funktion SetActive benutzen. denn, wie gesagt, nur das GameObject kennt diese Funktion. Und auch das sollte jetzt wieder funktionieren, und das tut es auch. Nun wissen Sie also, was es bedeutet, ganze GameObjects dynamisch zu aktivieren oder zu deaktivieren. Das gilt dann sowohl bei dem Objekt selber, auf dem die kontrollierende Komponente liegt, hier in dem Fall unser RingTurner, oder mit externen Objekten wie hier zum Beispiel der PlayerBox.

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)
Derzeit sind keine Feedbacks vorhanden...
 

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!