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.
int punkte = 3; if (punkte > 2) { System.out.println("Level 2"); }
int punkte = 3; if (punkte > 2) { Console.WriteLine("Level 2"); }
Spiele mit Unity programmieren
- Unity:Spiel-Engine: Figuren, Kameras und Hindernisse sind GameObjects in einer Szene.
- Skript:eine C#-Klasse, die von
MonoBehaviourerbt 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:
Time.deltaTime).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.
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.
Unity-Skript: Ein C#-Skript steuert ein GameObject: Start() läuft einmal, Update() in jedem Frame. Bewegung immer mit Time.deltaTime multiplizieren.
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.
