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.
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 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.
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.
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.