Spieleprogrammierung mit XNA - Teil 3 Verfasst am: 22.11.2009, 15:28
Spieleprogrammierung mit XNA - Teil 3
Willkommen zum dritten Tutorial,
mir ist grad langweilig, also hab ich das dritte schon geschrieben. In diesem Teil geht es um die erste Textur, die wir anzeigen wollen. Ich gehe vom Source aus Tutorial Nummer 2 aus, also bitte ladet das Projekt schonmal 3.1 Neue Variablen!
Mit neuen Funktionen kommen auf neue Variablen zum Einsatz. Das ist auch bei XNA so. Folgende Variablen deklariert ihr bitte global (Da wo auch die Device Variable sein sollte):
Visual Basic: [code]Private BgTextur As Texture2D = Nothing Private BgSpriteBatch As SpriteBatch = Nothing Private BgRectangle As Rectangle = Nothing Private BgTexCreationParams As TextureCreationParameters = TextureCreationParameters.Default [/code]
BgTextur beinhaltet die Textur, die wir verwenden werden. BgSpriteBatch ist die Variable, die XNA benutzt, um auf das Fenster zu zeichnen. Was ein SpriteBatch genau ist erkläre ich später. BgRectangle bestimmt die Größe und Position der Textur BgTexCreationParams gibt an, wie die Textur abgebildet werden soll. Ihr wird der Standardwert (Default) zugewiesen.
Soweit so gut, das sind auch schon alle neue Variablen, versprochen!
3.2 DefineBackground Funktion
Wenn wir jetzt schon eine schöne neue Textur machen können, verwenden wir sie direkt, um den Hintergrund festzulegen. Fügt folgendes eurem Code hinzu:
Visual Basic: [code]Private Sub DefineBackground() BgRectangle.Height = Me.Bounds.Height BgRectangle.Width = Me.Bounds.Width BgSpriteBatch = New SpriteBatch(Device) BgTextur = Texture2D.FromFile(Device, "images/bg.jpg", BgTexCreationParams) End Sub [/code]
Wie bereits erwähnt weißt BgRectangle der Textur die Größe und Position zu. Damit sollten die ersten 2 Zeilen leicht verständlich sein. In der dritten Zeile sagen erstellen wir unser SpriteBatch und sagen ihm, dass wir mit dem Objekt Device zeichnen möchten. In der letzten Zeile laden wir dann die Textur aus der angegebenen Datei. Das Tolle: Wenn die Datei nicht existiert schmiert euer Programm nicht mit einem Mega-Super Apllication Crash ab, sondern es wird lediglich eine MessageBox ausgegeben.
Das wars auch schon mit der ersten neuen Funktion!
Diese muss nur noch in die Funktion Initialisieren eingetragen werden, damit sie auch aufgerufen wird.
3.3 Änderung an der OnPaint Funktion
Damit unsere Textur auch gezeichnet wird, müssen wir die OnPaint Funktion ergänzen. Fügt folgende Zeilen zwischen Device.Clear(...) und Device.Present() ein. (Die werden in den nächsten Tutorials Szenenbeginn und Szenenende genannt) Das ist dann quasi ein erstes Szenenbild
Damit wird die Textur auf die Form gezeichnet. SpriteBlendMode.AlphaBlend sorgt für die Transparents unserer Textur, ihr könntet genausogut keine Parameter angeben. In der zweiten Zeile wird dann die Textur gezeichnet. BgTextur steht für die ausgewählte Textur. BgRectangle gibt dann die Position an. Color.White bedeutet nicht, dass die Textur dann komplett weiß ist, sondern dass sie normal dargestellt wird.
Startet nun euer Programm. Wenn ihr den Pfad zur Textur korrekt angegeben habt, müsste nun alles funktionieren. Eure erste Textur wurde dargestellt!
3.4 WTH ist SpriteBatch?!?
Mit XNA ist kein direktes zeichnen auf die Form Möglich, da man im Normalfall keinen Zugriff auf den sog. Framebuffer der Grafikkarte hat. Daher verwendet man ein SpriteBatch als Hilfskonstrukt, um eben diese Textur zu zeichnen.
Das wissen ist aber nicht unbedingt notwendig und nur für euch gedacht, wenn ihr euch wirklich für jede Kleinigkeit interessiert
Das wars dann auch schon mit dem dritten Tutorial. Im vierten Tutorial, von vorraussichtlich fünf geht es dann um die ersten Versuche eines eigenen Spiels (Bewegung von Texturen etc.)
Bis dahin, viel Erfolg
PS: SourceCode wieder im Anhang _________________
Computerdepp Newbie
Anmeldedatum: 27.11.2009 Beiträge: 1
Verfasst am: 27.11.2009, 21:42
Deine Tuts sind super, verstehe es noch lange nmicht, aber das kommt spätrer ^^
Ein Fehler ist aber schon bei mir ...
BgSpriteBatch = New SpriteBatch(Device) diese Zeile makiert er Gelb , er sagt :
The GraphicsDevice must not be null when creating new resources. Parametername: graphicsDevice
Was muss ich da ändern, habe eig den gleichen Code wie du bisher ^^
pasi2009 Newbie
Anmeldedatum: 16.11.2009 Beiträge: 2
Verfasst am: 25.12.2009, 20:17
Bei mir is auch genau das gleiche Problem.-
Und wann kommt eigentlich dein nächstes Tut?
Und wo verdammt noma is dein Anhang?!?
PS: Tut mir Leid wenn i zu blöd dafür bin _________________