Layers gehören in Unity zu den grundlegenden Werkzeugen, mit denen du GameObjects technisch gruppierst. Eine Layer kann beispielsweise festlegen, welche Objekte eine Kamera rendert, welche Elemente ein Raycast berücksichtigt oder welche Gruppen innerhalb des Physiksystems miteinander kollidieren. Gerade bei größeren Szenen erspart dir eine durchdachte Layer-Struktur zahlreiche Einzelabfragen in deinen Scripts.
Was ist eine Layer in Unity?
Jedes GameObject gehört in Unity einer Layer an. Die Zuordnung findest du oben im Inspector. Neu angelegte Objekte befinden sich häufig zunächst auf der Layer Default. Du kannst anschließend eine andere vorhandene Layer auswählen oder eigene Layers für dein Projekt anlegen.
Eine Layer beschreibt dabei nicht zwangsläufig, was ein Objekt inhaltlich darstellt. Sie dient vor allem dazu, Objekte für bestimmte technische Vorgänge zusammenzufassen. So könnten Spieler, Gegner, Umgebung oder interaktive Gegenstände jeweils eigenen Layers zugeordnet sein.
Layer und Tag sind nicht dasselbe
Tags und Layers stehen im Inspector dicht beieinander, erfüllen aber unterschiedliche Aufgaben. Ein Tag eignet sich zur Identifikation eines GameObjects innerhalb deiner Spiellogik. Layers dienen vor allem als Filter für Systeme wie Rendering, Physik und Raycasts.
Deine Spielfigur kann beispielsweise das Tag Player tragen und gleichzeitig der Layer Player zugeordnet sein. Trotz identischer Bezeichnung handelt es sich um zwei voneinander unabhängige Einstellungen. Mehr zur ersten Variante erfährst du im Artikel Unity Tags – GameObjects eindeutig kennzeichnen.
Default als Ausgangspunkt
Für erste Versuche reicht die Layer Default oft aus. Sobald deine Szene komplexer wird, lohnt sich eine gezielte Aufteilung. Ein Plattformer könnte beispielsweise eigene Layers für den Spieler, den Boden, Gegner oder bestimmte interaktive Objekte nutzen.
Eine große Zahl eigener Layers ist allerdings nicht automatisch besser. Lege sie dort an, wo verschiedene Systeme tatsächlich zwischen Objektgruppen unterscheiden müssen. Dadurch bleibt die Projektstruktur nachvollziehbar.
Layers bestimmen, was eine Kamera sieht
Eine wichtige Anwendung findest du bei der Camera. Über ihre Culling Mask bestimmst du, welche Layers sie rendert. Entfernst du dort eine Layer, zeichnet diese Kamera die entsprechenden GameObjects nicht mehr.
Das ermöglicht Kameras mit unterschiedlichen Aufgaben. Eine Hauptkamera kann beispielsweise die eigentliche Spielwelt darstellen, während eine weitere Kamera nur ausgewählte Elemente berücksichtigt. Auch spezielle Ansichten oder andere Renderaufbauten lassen sich auf diese Weise strukturieren.
Die Grundlagen der Hauptkamera beschreibt der Artikel Unity Main Camera – der Blick auf deine Spielwelt.
Layers bei Raycasts verwenden
Auch Raycasts können Layers als Filter nutzen. Ein Raycast ist vereinfacht gesagt eine unsichtbare Abfrage entlang einer Linie beziehungsweise Richtung. Damit lässt sich beispielsweise feststellen, ob sich vor einer Spielfigur ein bestimmtes Objekt befindet oder welches Objekt der Spieler anklickt.
Über eine LayerMask begrenzt du die Abfrage auf relevante Objektgruppen. Ein Raycast zur Bodenerkennung muss beispielsweise nicht zwangsläufig Dekorationen oder andere Elemente untersuchen, wenn diese für die Abfrage keine Bedeutung besitzen.
Layers und das Physiksystem
Unity kann Layers außerdem bei der Berechnung von Kollisionen berücksichtigen. Über die Layer Collision Matrix legst du fest, welche Layer-Paare miteinander interagieren sollen.
Das ist beispielsweise praktisch, wenn bestimmte Projektile den Spieler treffen sollen, untereinander aber keine Kollision benötigen. Statt jede unerwünschte Kombination erst innerhalb eines Scripts abzufangen, kann bereits die Physikkonfiguration entsprechende Interaktionen ausschließen.
LayerMask in einem Script einsetzen
Möchtest du eine Layer-Auswahl direkt im Inspector bereitstellen, kannst du in einem eigenen Script eine LayerMask verwenden. Ein vereinfachtes Beispiel sieht so aus:
using UnityEngine;
public class GroundCheck : MonoBehaviour
{
public LayerMask groundLayer;
}
Im Inspector erscheint anschließend ein Feld, über das du die gewünschten Layers auswählst. Die Variable lässt sich danach beispielsweise für eine Bodenprüfung mit einem Raycast verwenden. Dadurch musst du die Layer nicht fest in den Programmcode eintragen.
Layers sind keine Sorting Layers
Besonders bei 2D-Projekten sorgt der Begriff Sorting Layer leicht für Verwechslungen. Eine normale GameObject-Layer und eine Sorting Layer erfüllen unterschiedliche Aufgaben.
Sorting Layers beeinflussen unter anderem die Reihenfolge, in der SpriteRenderer dargestellt werden. Damit kannst du beispielsweise festlegen, dass eine Spielfigur vor dem Hintergrund, aber hinter einem Vordergrundelement erscheint. Zusätzlich entscheidet der Order in Layer über die Reihenfolge innerhalb einer Sorting Layer.
Die normale Layer eines GameObjects übernimmt diese Zeichenreihenfolge nicht. Sie dient unter anderem den zuvor beschriebenen Kamera-, Physik- und Abfragefunktionen. Ein hoher Wert beim Order in Layer ersetzt deshalb keine normale Layer und umgekehrt.
Layers bei 2D-Spielen bewusst planen
Bei einem 2D-Spiel begegnen dir häufig beide Systeme gleichzeitig. Du könntest beispielsweise eine normale Layer Player für physikalische Abfragen verwenden und den SpriteRenderer derselben Figur einer Sorting Layer Player zuordnen. Beide tragen dann zwar denselben Namen, bleiben technisch aber getrennt.
Eine klare Benennung hilft dir deshalb besonders bei umfangreicheren Szenen. Prüfe bei Darstellungsproblemen zuerst, ob du gerade mit einer normalen Layer oder einer Sorting Layer arbeitest. Bei Kollisionsproblemen ist dagegen meist die normale Layer und ihre Physikkonfiguration relevant.
Layers als Teil einer übersichtlichen Projektstruktur
Gut eingesetzte Layers reduzieren nicht nur unnötige Abfragen. Sie machen auch sichtbar, welche Objektgruppen innerhalb deines Projekts unterschiedliche technische Aufgaben erfüllen. Statt jedes GameObject einzeln zu behandeln, definierst du Regeln für ganze Gruppen.
Plane diese Struktur dennoch nach den tatsächlichen Anforderungen deines Spiels. Nicht jede Figur, Plattform oder Dekoration benötigt eine eigene Layer. Je eindeutiger die Aufgabe einer Layer definiert ist, desto leichter lässt sich die Konfiguration später nachvollziehen.
Weitere Einzelheiten zur Einrichtung und Verwendung findest du im Unity-Handbuch zu Layers.
