GEC1
Begriff · bild

Prefab

Ein gespeichertes GameObject als Vorlage im Projekt. In der Szene stehen Instanzen davon. Eine Änderung am Prefab erreicht alle Instanzen, außer an Stellen, die eine Instanz selbst überschreibt.

Kurz

Ein Prefab ist ein GameObject samt Komponenten und Kindern, gespeichert als Datei im Projekt. Aus dieser Vorlage entstehen beliebig viele Instanzen in einer oder mehreren Szenen.

Wird das Prefab geändert, übernimmt Unity die Änderung in alle Instanzen. Zehn Laternen aus einem Prefab lassen sich so an einer Stelle umbauen.

Genauer

Eine Instanz darf von ihrem Prefab abweichen. Solche Abweichungen heißen Overrides: ein anderer Wert, eine zusätzliche oder entfernte Component, ein zusätzliches Kindobjekt. Ein Override gilt immer vor dem Wert aus dem Prefab. Ändert man später genau diesen Wert im Prefab, merkt die Instanz davon nichts.

Position und Rotation der Instanz zählen nicht als Override; jede Instanz steht ohnehin woanders.

Prefabs lassen sich auch zur Laufzeit erzeugen: ein Projektil beim Schuss, ein Gegner pro Welle. Das Skript braucht dafür eine Referenz auf das Prefab:

public GameObject kugelPrefab;   // im Inspector das Prefab hineinziehen

void Schiessen()
{
    Instantiate(kugelPrefab, transform.position, transform.rotation);
}

In Unity sehen

  • Anlegen: ein Objekt aus der Hierarchy in das Project-Fenster ziehen. Der Name in der Hierarchy wird blau: Das Objekt ist jetzt eine Instanz.
  • Bearbeiten: das Prefab im Project-Fenster doppelklicken. Unity öffnet es im Prefab-Modus, ohne den Rest der Szene.
  • Overrides erkennen: Im Inspector einer Instanz stehen überschriebene Werte fett, mit einem blauen Strich links.
  • Overrides übernehmen oder verwerfen: Im Inspector der Instanz oben Overrides öffnen, dann Apply All (ins Prefab schreiben) oder Revert All (zurück zum Prefab).

Achtung, Namensgleichheit: Dieses Revert setzt eine Instanz auf ihr Prefab zurück. Mit dem Revert in Git hat es nichts zu tun.

Weiterlesen