Unity Static ist der Begriff für statische Objekte. Im oberen Bereich des Unity-Inspectors findest du bei einem GameObject die Einstellung Static. Damit teilst du Unity mit, dass sich bestimmte Eigenschaften dieses Objekts während des Spiels nicht verändern sollen. Typische Kandidaten sind feste Bestandteile eines Levels, Gebäude, Wände oder unbewegliche Dekorationen.
Die Einstellung dient nicht einfach dazu, ein GameObject gegen Bewegungen zu sperren. Ein als statisch gekennzeichnetes Objekt lässt sich grundsätzlich weiterhin über seinen Transform verändern. Vielmehr kann Unity die Information nutzen, um bestimmte Berechnungen und Optimierungen auf Objekte auszurichten, deren Position beziehungsweise Zustand in diesem Zusammenhang konstant bleibt.
Static ist mehr als ein einzelner Schalter
Auf den ersten Blick erscheint Static im Inspector wie eine einfache Checkbox. Hinter der Einstellung stehen jedoch verschiedene statische Eigenschaften. Über das zugehörige Menü kannst du festlegen, für welche Systeme Unity ein GameObject als statisch behandeln soll.
Welche Optionen dir zur Verfügung stehen, hängt unter anderem von der verwendeten Unity-Version und den eingesetzten Systemen ab. Die statische Kennzeichnung kann beispielsweise für Rendering, Lichtberechnung, Navigation oder andere Optimierungsverfahren relevant sein. Deshalb muss ein GameObject nicht zwangsläufig für sämtliche Bereiche als statisch gelten.
Static und die Position eines GameObjects
Ob ein Objekt für eine statische Kennzeichnung geeignet ist, hängt wesentlich davon ab, was während des Spiels mit ihm geschieht. Eine Wand, die während des gesamten Levels an derselben Stelle bleibt, erfüllt andere Voraussetzungen als eine Plattform, die sich zwischen zwei Punkten bewegt.
Eine wichtige Rolle spielt dabei der Transform. Er enthält Position, Rotation und Skalierung eines GameObjects. Ändern Scripts, Animationen oder andere Systeme diese Werte während des Spiels, solltest du prüfen, ob die gewählten Static-Einstellungen weiterhin zum Verhalten des Objekts passen.
Wie Position, Rotation und Skalierung zusammenwirken, erklärt der Artikel Unity Transform – Position, Rotation und Skalierung verstehen.
Bewegliche Objekte nicht pauschal als Static markieren
Eine Spielfigur, ein Gegner, ein fahrendes Objekt oder eine bewegliche Plattform verändert während des Spiels seine Position. Solche GameObjects solltest du nicht ohne konkreten Grund mit statischen Eigenschaften versehen, die von einer unveränderten Position ausgehen.
Dasselbe gilt für Objekte, die zunächst unbeweglich aussehen, später aber Teil einer Animation oder Spielmechanik sind. Eine Tür bleibt vielleicht die meiste Zeit geschlossen, bewegt sich aber beim Öffnen. Ein Stein kann zunächst zur Umgebung gehören und später durch eine Explosion verschoben werden. Entscheidend ist deshalb nicht nur der Zustand beim Start der Szene, sondern das Verhalten während des gesamten Spielablaufs.
Static bei 2D-Spielen
Auch in einem 2D-Projekt kannst du zwischen dauerhaft unbeweglichen und beweglichen Elementen unterscheiden. Ein fest aufgebauter Levelabschnitt bleibt beispielsweise an seiner Position, während Spieler, Gegner, Sammelobjekte oder bewegliche Plattformen ihre Position verändern können.
Allerdings bedeutet „Teil des Hintergrunds“ nicht automatisch „Static“. Ein Hintergrundelement kann animiert sein, verschoben werden oder einem Parallax-Effekt folgen. Umgekehrt kann ein sichtbares Spielelement dauerhaft an derselben Position bleiben. Entscheidend ist die technische Funktion des jeweiligen GameObjects.
Static und Lichtberechnung
Statische Informationen spielen auch bei bestimmten Beleuchtungsverfahren eine Rolle. Bleiben Teile einer Szene dauerhaft unverändert, können Lichtinformationen je nach verwendetem Beleuchtungssystem vorab berechnet beziehungsweise für entsprechende Verfahren berücksichtigt werden.
Welche Einstellungen sinnvoll sind, hängt stark von der Render Pipeline, der Beleuchtung und dem Aufbau deiner Szene ab. Setze deshalb nicht vorsorglich jedes unbeweglich wirkende Objekt auf sämtliche verfügbaren Static-Optionen, sondern orientiere dich an den tatsächlich verwendeten Funktionen.
Static und Navigation
Auch Navigationssysteme können Informationen über die unbewegliche Umgebung benötigen. Feste Böden, Wände und andere Levelbestandteile unterscheiden sich dabei von Figuren oder Hindernissen, die ihre Position während des Spiels verändern.
Wie stark die Static-Einstellungen dabei eine Rolle spielen, hängt von deinem verwendeten Navigationssystem und dessen Version ab. Gerade bei neueren, komponentenbasierten Lösungen solltest du deshalb die Einstellungen des jeweiligen Systems prüfen, statt ältere Unity-Arbeitsweisen ungeprüft zu übernehmen.
Static ersetzt keine Physikeinstellungen
Die Static-Kennzeichnung darfst du nicht mit einem unbeweglichen Rigidbody oder einem Collider verwechseln. Möchtest du festlegen, wie ein GameObject auf die Unity-Physik reagiert, sind die entsprechenden 2D- oder 3D-Physikkomponenten dafür zuständig.
Ebenso ersetzt Static keine Layer. Layers gruppieren GameObjects unter anderem für Kamera-, Raycast- und Physikabfragen. Static liefert dagegen Informationen darüber, ob ein Objekt für bestimmte Systeme als unveränderlich betrachtet werden kann. Mehr zu dieser Trennung findest du unter Unity Layers – Objekte für Rendering und Physik ordnen.
Warum die Main Camera normalerweise nicht statisch ist
Eine Main Camera eignet sich gut, um den Unterschied zu verdeutlichen. Folgt sie deiner Spielfigur durch ein Level, verändert sich ihr Transform fortlaufend. Sie gehört damit zu den beweglichen GameObjects der Szene.
Selbst eine Kamera, die zu Beginn scheinbar feststeht, kann später durch ein Camera-Follow-Script, eine Animation oder Cinemachine bewegt werden. Die tatsächliche Kamerasteuerung entscheidet daher darüber, welche Einstellungen sinnvoll sind.
Static gezielt einsetzen
Markiere GameObjects nicht allein deshalb als Static, weil sie momentan unbeweglich in der Scene View stehen. Überlege zuerst, ob sie sich während des Spiels bewegen, drehen oder auf andere Weise verändern und welches Unity-System die statische Information überhaupt verwenden soll.
Bei einem überschaubaren Projekt kannst du die Static-Einstellungen zunächst gezielt für eindeutig feste Bestandteile einsetzen und die Struktur mit wachsendem Spiel erweitern. So bleibt nachvollziehbar, warum ein bestimmtes GameObject als statisch gekennzeichnet wurde.
Grundlagen zu GameObjects und ihrem Aufbau findest du im Unity-Handbuch zu GameObjects.
