XNA/Tutorials/Grundlagen 1 - Hello World!
Inhaltsverzeichnis
Teil 1: Hello, World!
0. Vorwort
Das hier wird kein C# tutorial. Wirklich nicht.
1. Installation
In diesem (und jedem anderen von mir verfassten Tutorial zu diesem Thema) verwenden wir als IDE Visual C# 2008 Express-Edition[1]. Diese kann kostenfrei aus dem Netz heruntergeladen werden. Desweiteren wird eine aktuelle Version des Game Studio Express[2] benoetigt. Die Installation gestaltet sich recht einfach und sollte fuer jeden verstaendlich sein, von daher werde ich nicht weiter darauf eingehen. Das einzige was ihr beachten solltet ist, dass ihr das Game Studio erst nach der abgeschlossenen Installation von Visual C# 2008 installiert.
[1]http://www.microsoft.com/germany/Express/product/visualcsharpexpress.aspx
2. Hello World
2. 1. Vorbereitung
Ok, ihr habt Visual Studio C# (im Folgenden: VC# oder IDE) installiert und gestartet. Als erstes gild es ein neues XNA-Projekt zu erstellen. Klickt dazu einfach "Datei-> Neues Projekt" und waehlt unter "XNA Game Studio 3.0" die Vorlage "Windows Game (3.0)". Gebt dem Kind noch einen passenden Namen und bestaetigt mit OK.
[screen01.png]
Ok, damit haetten wir schon eine voll lauffaehige XNA-Anwendung. Ihr koennt sie direkt mal durch einen Druck auf F5 ausprobieren. In der Regel solltet ihr nun ein wunderherrliches himmelblaues Fenster zu Gesicht bekommen (einen Screenshot spare ich mir an dieser Stelle ;-)). Beachtet auch dass sich die Oberflaeche der IDE im Hintergrund geaendert hat. Ihr befindet euch derzeit im Debug-modus. Dieser ermoeglicht unter anderem das Setzen von Breakpoints. An diesen Punkten wird das Programm angefahlten, und ihr koennt in einzelnen Schritten den Programmfluss folgen. Dazu jedoch spaeter mehr.
Als erste Anwendung wollen wir ein einfaches Sprite (ein kleines Bildchen) auf diesem Hintergrund anzeigen lassen. Fuer den Fall dass ihr im Moment zu faul seid um schöpferisch aktiv zu werden und euch selbst ein lustiges Bildchen zu malen (ich kann verstehen, wirklich), habe ich hier schonmal was vorbereitet.
(Bitte nur im Zuge des Tutorials verwenden. Anderweitige Verwendung nur im Tausch gegen Naturalien oder sexuelle Gefaelligkeiten)
Speichert dieses Bild einfach irgendwo auf eurer Festplatte.
Nun, woher weiss VC# dass wir dieses Bildchen gerne angezeigt bekommen wuerden? Ganz einfach: Wir sagen es ihm. Klickt dazu rechts im Projektmappen-Explorer mit der Rechten Maustaste auf "Content" und waehlt "Hinzufuegen -> Vorhandenes Element". Navigiert nun einfach zu dem Ort an dem eure Grafik liegt und bestaetigt mit ok. Wenn alles geklappt hat seht ihr nun untre Content den Namen der grafik angezeigt (epic.png).
Das waere es vorerst mit den Vorbereitungsarbeiten und wir koennen (endlich) anfangen zu programmieren.
2. 2. ZOMG! It works!
Ok, wir haben nun also unser Bildchen dem Projekt hinzugefuegt. Allerdings weiß unser eigentliches Programm damit immernoch nicht wirklich viel anzufangen. Um die beiden einander Vorzustellen sucht einfach folgende CodeZeilen und erweitert sie entsprechend.
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Texture2D mySprite;
Vector2 mySpritePos = new Vector2(10, 10);
Mit der ersten neuen Zeile deklarieren wir eine neue Textur die unser Sprite "speichern" wird. Die zweite Zeile erzeugt (und initialisiert) einen Vector. Stellt euch einen Vector2 einfach als eine Gruppe von 2 float-werten vor, in unserem Fall X und Y Koordinate.
Und weiter gehts. Sucht als naechstes die Methode LoadContent() und aendert sie wie folgt ab:
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
mySprite = this.Content.Load<Texture2D>("epic");
}
Die neue Zeile macht letztendlich nichts anderes als unser Sprite der eben deklarierten Textur zuzuweisen. Beachtet hierbei dass _nicht_ der Dateiname des angegeben werden muss, sondern der Name des betreffenden Assets. Klickt dazu einfach einmal Rechts im Projektmappen-Explorer auf den Namen eures geladenen Sprites, und beaugaepfelt anschließend das Eigenschaften-fenster.
Alles was wir jetzt noch zu tun haben um unser Sprite in voller Pracht erstrahlen zu lassen ist die Draw-Methode abzuaendern.
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
spriteBatch.Begin();
spriteBatch.Draw(mySprite, mySpritePos, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
"spriteBatch.Begin();" macht der Engine im endeffekt nur Begreiflich dass wir jetzt anfangen wollen Sachen auf den Bildschirm zu zeichnen. Zu jedem Aufruf von "spriteBatch.Begin();" _muss_ ein korrespondierender Aufruf von "spriteBatch.End();" erfolgen.
Dann waere da noch "spriteBatch.Draw". Unser Aufruf waere der minimalste der stattfinden kann. Der erste Parameter waere eine Textur, der zweite wie man sehen kann ein Vector( oder auch ein Rectangle - bedient euch Intellisense wenn ihr mehr wissen wollt ;-)) und der dritte offensichtlich eine Farbe. Farbe? Ja, Farbe. Durch die Angabe von "Color.White" wird das Bild in seiner "Rohfassung" dargestellt. Durch andere Farbwerte kann man das Bild entsprechend eintönen. (einige moegliche Farben werden euch ja im IntelliSense angezeigt)