🏠 Startseite

🎮 GameObjects in Unity

In Unity beginnt alles mit einem GameObject — es ist wie ein Baustein, aus dem das ganze Spiel aufgebaut wird. Figuren, Gegner, Buttons, Kugeln, Bäume, sogar leerer Raum mit einem Skript — all das sind GameObjects.

Ein GameObject ist für sich genommen nur ein Container. Es bewegt sich nicht, blinkt nicht und gibt keine Geräusche von sich, solange du ihm nicht sagst, was es tun soll — und das geschieht per Code.

In dieser Lektion lernst du, wie du Objekte in Variablen speicherst, sie im Spiel ein- und ausschaltest und sie dazu bringst, deinen Befehlen zu folgen — Schritt für Schritt, ohne Eile.

🏗 GameObject erstellen

Um der Szene etwas Neues hinzuzufügen, musst du ein GameObject erstellen. Das kannst du manuell im Editor tun: Rechtsklick in der Hierarchie → Create Empty oder eine Vorlage wählen, wie 3D Object → Cube oder 2D → Sprite.

Jedes GameObject hat einen Namen — so kannst du es in der Objektliste leicht wiederfinden. Gib ihm einen eindeutigen Namen: Player, Enemy, Fireball — damit du später nicht durcheinander kommst.

Selbst ein leeres Objekt ist nicht ganz leer: Es hat immer einen Transform — die Hauptkomponente, ohne die ein Objekt nicht existieren kann. Transform ist verantwortlich für Position, Drehung und Skalierung des Objekts in der Welt.

Wenn du ein Objekt in der Szene sehen kannst, hat es einen Transform. Selbst wenn du es nicht sehen kannst — er ist trotzdem da. Es ist wie Koordinaten auf einer Karte: Ohne sie wüsste das Objekt nicht, wo es ist.

Unity-Editor mit geöffnetem GameObject-Menü in der oberen Leiste
Unity-Editor — das GameObject-Menü ist in der oberen Leiste geöffnet und zeigt Optionen zum Erstellen neuer Objekte

💡 Unity kann automatisch ein GameObject erstellen, wenn du z. B. einfach einen Sprite in die Szene ziehst. Es erstellt sofort ein neues Objekt, fügt die benötigten Komponenten hinzu (z. B. SpriteRenderer) und passt den Transform an. Das ist ein schneller Start — aber unter der Haube ist es immer noch dasselbe GameObject.

💡 Du kannst Objekte auch direkt per Code erstellen — aber es ist besser, zunächst zu verstehen, wie sie manuell aufgebaut sind.

🧷 GameObject als Variable

Um ein Objekt per Code zu steuern, musst du eine Referenz darauf in einer Variable speichern. Das ist, als würdest du ein unsichtbares Band vom Skript zum Objekt spannen.

Dafür deklarieren wir eine Variable vom Typ GameObject. Damit sie im Unity-Editor sichtbar ist und manuell zugewiesen werden kann, muss davor das Schlüsselwort public stehen.

Danach siehst du im Inspector ein neues Feld unter deinem Skript. Ziehe einfach das gewünschte Objekt aus der Szene hinein — und schon kann das Skript mit ihm arbeiten.


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Öffentliche Variable — im Editor sichtbar und zuweisbar
    public GameObject player;

    // Start wird einmal beim Start des Objekts aufgerufen
    void Start()
    {
        // Zum Beispiel das Objekt beim Start deaktivieren
        // player.SetActive(false);
    }

    // Update wird jeden Frame aufgerufen
    void Update()
    {
        // Objekt während des Spiels steuern
    }
}

💡 player.SetActive(false) ist eine der Unity-Methoden, mit der du ein Objekt ein- und ausschalten kannst. Es gibt viele solcher Methoden, die dir helfen, den Zustand und das Verhalten von Objekten direkt per Code zu steuern. Mehr zu Unity-API-Befehlen erfährst du in Lektion 9.

Unity-Editor: Objekt mit angehängtem CSharpScript und sichtbarem Player-Feld im Inspector
Im Unity-Editor: Objekt mit angehängtem CSharpScript. Im Inspector ist das öffentliche Feld Player zu sehen, in das du ein anderes GameObject aus der Szene ziehen kannst.

💡 public macht eine Variable von außen zugänglich — deshalb kann Unity sie im Editor anzeigen. Es gibt auch eine andere Möglichkeit mit [SerializeField], auf die wir später eingehen.

Manchmal wird eine Variable nur innerhalb des Skripts benötigt — dann musst du public nicht schreiben. Du kannst sie privat lassen (standardmäßig oder explizit mit private) und den Wert direkt im Code festlegen, ohne den Editor zu nutzen.


using UnityEngine;

public class CSharpScript : MonoBehaviour
{
    // Private Variable — im Editor nicht sichtbar, aber im Skript verfügbar
    private GameObject player;

    // Start wird einmal beim Start des Objekts aufgerufen
    void Start()
    {
        // Objekt mit dem Tag "Player" suchen und in der Variablen speichern
        player = GameObject.FindWithTag("Player");
    }

    // Update wird jeden Frame aufgerufen
    void Update()
    {

    }
}

In der nächsten Lektion sprechen wir über Komponenten eines GameObjects — die „inneren Teile“, die es sichtbar, beweglich oder reaktiv auf die Welt machen. Wir lernen, wie man im Code auf diese Komponenten zugreift und sie steuert.