MINT lernen

C#: Spiele und Anwendungen

Die Sprache hinter vielen Windows-Programmen und Unity-Spielen — und sie sieht Java verblüffend ähnlich.

1

C# und die Plattform .NET

  • C#:gesprochen „C Sharp“; 2000 von Microsoft vorgestellt, objektorientiert und statisch typisiert — die Schreibweise ähnelt Java.
  • .NET:Laufzeitumgebung mit großer Bibliothek; läuft heute unter Windows, macOS und Linux.
  • Übersetzung:der C#-Compiler erzeugt Zwischencode (CIL); die .NET-Laufzeit übersetzt ihn beim Ausführen per JIT in Maschinencode.
  • Ausgabe:Console.WriteLine("Hallo"); schreibt eine Zeile in die Konsole.
  • Einsatz:Windows-Programme, Web-Server mit ASP.NET, Apps — und Spiele mit der Engine Unity.
Java
int punkte = 3;
if (punkte > 2) {
    System.out.println("Level 2");
}
C#
int punkte = 3;
if (punkte > 2)
{
    Console.WriteLine("Level 2");
}
2

Spiele mit Unity programmieren

  • Unity:Spiel-Engine: Figuren, Kameras und Hindernisse sind GameObjects in einer Szene.
  • Skript:eine C#-Klasse, die von MonoBehaviour erbt und an ein GameObject gehängt wird.
  • Start():läuft einmal, wenn das Spiel beginnt.
  • Update():läuft einmal pro Bild (Frame) — bei 60 fps also 60-mal pro Sekunde.
  • Eingabe:Input.GetKey(KeyCode.RightArrow) ist wahr, solange die Pfeiltaste gedrückt ist (klassisches Eingabesystem).
  • Time.deltaTime:Zeit seit dem letzten Frame in Sekunden; damit bewegt sich die Figur auf jedem Rechner gleich schnell.

Herleitung:

\(s_{\text{Frame}} = v \cdot \Delta t\)
| pro Frame
Pro Frame bewegt sich die Figur um Tempo mal Frame-Dauer \(\Delta t\) (Time.deltaTime).
\(s_{\text{1 s}} = f \cdot v \cdot \Delta t\)
| \(f\) Frames pro Sekunde
In einer Sekunde laufen \(f\) Frames ab.
\(s_{\text{1 s}} = v\)
Ergebnis
Wegen \(f \cdot \Delta t = 1\,\text{s}\) hängt der Weg pro Sekunde nicht mehr von der Bildrate ab.

Baue die Methode Update(): Baustein unten anklicken, dann einen freien Platz im Skript anklicken. Starte das Spiel und steuere die Figur mit den Pfeiltasten (erst die Spielfläche anklicken) oder den Knöpfen ◀ ▶. Vergleiche dann die Bildraten.

Skript-Baukasten: Spielfigur steuern

Bildrate

Halte fest: Das Skript beschreibt nur, was in einem Frame passiert; Unity ruft Update() immer wieder auf. Mit Time.deltaTime ist die Figur bei 30 und bei 144 fps gleich schnell.

Merke

Unity-Skript: Ein C#-Skript steuert ein GameObject: Start() läuft einmal, Update() in jedem Frame. Bewegung immer mit Time.deltaTime multiplizieren.

3

Allgemeine Hinweise

Groß- und Kleinschreibung

C# unterscheidet streng: Console.WriteLine funktioniert, console.writeline nicht — anders als manche Befehle, die du aus Scratch oder Calliope kennst.

Update() ist keine Schleife

Schreibe in Update() keine eigene Endlosschleife. Die Engine ruft die Methode selbst Frame für Frame auf — eine Schleife darin friert das Spiel ein.

Von Java nach C#

Klassen, if, for und Datentypen kennst du aus Java. Neu sind vor allem Namen wie Console statt System.out und string klein geschrieben.

Videos