Hallo,
ich dachte mir, wieso fang ich nicht mit ner kleinen Tutorialserie über XNA an.
Früher war XNA nur für C#, also mit ContentPipeline, verfügbar. Jetzt kann man sich die VB.NET-Unterstützung holen, indem man sich das Windows Phone SDK 7.1 runterläd. Das XNA Gamestudio 4.0 darf natürlich nicht fehlen.
Grundvorraussetzungen sind:
Fangen wir an.
Teil 1: Projekterstellung
Als erstes müssen wir, wie bei jedem Projekt was wir generell anfangen, ein neues Projekt erstellen. Nach der Installation des SDK's ist in unserer IDE (hier Visual Studio 2010) ist im Projekterstellungsdialog unter dem Menüpunkt XNA Game Studio 4.0 nun auch was erschienen.
So sollte es bei euch aussehen:

Nun klickt ihr einfach auf OK und euer Projekt ist erstellt. War doch ganz einfach.
Teil 2: Gliederung des vorgegeben Quellcodes
So, nun haben wir unser Projekt vor uns. Ich habe meins Our Test Game genannt.
Ungefähr so siehts dann auch bei euch aus:

Wir haben in unserem Projekt 2 .vb-Dateien. Die Program.vb-Datei ist dafür da, um unser Spiel zu starten und die Game.vb ist das Spiel an sich.
Im Moment ist erstmal nur die Game.vb wichtig und wir lassen die Program.vb weg.
Die Game.vb sollte bei euch dann so aussehen:
Code
Ich erläutere kurz, wofür die Methoden, sprich Subs, da sind und was da rein kommt:
Die Sub New() ist unser Konstruktor, wie wir ihn auch aus der Anwendungsprogrammierung mit Klassen kennen.
Dort kann man dann Initialisierungen von eigenen Klassen oder auch von Gamekomponenten, worüber ich hier nicht schreiben werde, veranlassen (mir ist kein besseres Wort eingefallen :D)
Die Sub Initialize() ist dafür da, um Einstellungen wie Sichtbarkeit des Cursors (IsMouseVisible (C#)) oder auch den Vollbildmodus (graphics.IsFullScreen (C#) einzustellen.
Die Sub LoadContent() ist dafür da, um Inhalt wie Texturen aus dem Contentprojekt zu laden. Wie z.B so:
Dann gibt es noch die Sub UnloadContent() - welche aber bei mir fast nie benutzt wird, da ich nichts hab, welches nicht vom Contentmanager geladen wird. Also, dort kann man Sachen unloaden, welche nicht vom Contentmanager geladen werden.
Außerdem dann noch die Sub Update(), welche da ist, um z.B. die Position des Spielers zu verändern - also allgemein Variablen "updaten".
Zu guter letzt, meiner Meinung nach die wichtiges Sub, die Draw()-Methode. Hier wird alles gezeichnet (ausgenommen Gamecomponents).
Teil 3: Anzeigen einer Texture
Wir sind jetzt an dem Punkt angelangt, wo wir mit dem eigentlichen "Spiel" anfangen. Von einem Spiel kann hier noch lange nicht die Rede sein, weil wir erstmals nur eine Textur anzeigen.
Fangen wir mal an
Was wir brauchen
Jetzt stellt sich die Frage, jedenfalls für XNA-Anfänger: Wie fügen wir dem Contentprojekt eine Texture hinzu?
Das ist ganz einfach:
Nun müssen wir noch unsere Textur global deklarieren (unter die anderen Deklarationen):
So... nun können wir in der Load-Methode laden. Und das geht so:
So. Das wäre geschafft.
Nun müssen wir sie ja auch zeichnen lassen. Das geht in der Draw-Sub:
Wenn ihr nun F5 drückt, bzw. das Programm ausführt, solltet ihr nun einen blauen Hintergrund sehen und drauf eure Texture.
Das wars auch schon wieder. Ich hoffe, ihr könnt damit was anfangen und weitere Tutorials folgen!
Grüße Myrax
ich dachte mir, wieso fang ich nicht mit ner kleinen Tutorialserie über XNA an.
Früher war XNA nur für C#, also mit ContentPipeline, verfügbar. Jetzt kann man sich die VB.NET-Unterstützung holen, indem man sich das Windows Phone SDK 7.1 runterläd. Das XNA Gamestudio 4.0 darf natürlich nicht fehlen.
Grundvorraussetzungen sind:
- mindestens Grundkenntnisse in Visual Basic .NET
- Erfahrung mit der IDE, sprich der Programmierumgebung
Fangen wir an.
Teil 1: Projekterstellung
Als erstes müssen wir, wie bei jedem Projekt was wir generell anfangen, ein neues Projekt erstellen. Nach der Installation des SDK's ist in unserer IDE (hier Visual Studio 2010) ist im Projekterstellungsdialog unter dem Menüpunkt XNA Game Studio 4.0 nun auch was erschienen.
So sollte es bei euch aussehen:

Nun klickt ihr einfach auf OK und euer Projekt ist erstellt. War doch ganz einfach.
Teil 2: Gliederung des vorgegeben Quellcodes
So, nun haben wir unser Projekt vor uns. Ich habe meins Our Test Game genannt.
Ungefähr so siehts dann auch bei euch aus:

Wir haben in unserem Projekt 2 .vb-Dateien. Die Program.vb-Datei ist dafür da, um unser Spiel zu starten und die Game.vb ist das Spiel an sich.
Im Moment ist erstmal nur die Game.vb wichtig und wir lassen die Program.vb weg.
Die Game.vb sollte bei euch dann so aussehen:
VB.NET-Quellcode
- '''
- ''' This is the main type for your game
- '''
- Public Class Game1
- Inherits Microsoft.Xna.Framework.Game
- Private WithEvents graphics As GraphicsDeviceManager
- Private WithEvents spriteBatch As SpriteBatch
- Public Sub New()
- graphics = New GraphicsDeviceManager(Me)
- Content.RootDirectory = "Content"
- End Sub
- '''
- ''' Allows the game to perform any initialization it needs to before starting to run.
- ''' This is where it can query for any required services and load any non-graphic
- ''' related content. Calling MyBase.Initialize will enumerate through any components
- ''' and initialize them as well.
- '''
- Protected Overrides Sub Initialize()
- ' TODO: Add your initialization logic here
- MyBase.Initialize()
- End Sub
- '''
- ''' LoadContent will be called once per game and is the place to load
- ''' all of your content.
- '''
- Protected Overrides Sub LoadContent()
- ' Create a new SpriteBatch, which can be used to draw textures.
- spriteBatch = New SpriteBatch(GraphicsDevice)
- ' TODO: use Me.Content to load your game content here
- End Sub
- '''
- ''' UnloadContent will be called once per game and is the place to unload
- ''' all content.
- '''
- Protected Overrides Sub UnloadContent()
- ' TODO: Unload any non ContentManager content here
- End Sub
- '''
- ''' Allows the game to run logic such as updating the world,
- ''' checking for collisions, gathering input, and playing audio.
- '''
- ''' Provides a snapshot of timing values.
- Protected Overrides Sub Update(ByVal gameTime As GameTime)
- ' Allows the game to exit
- If GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed Then
- Me.Exit()
- End If
- ' TODO: Add your update logic here
- MyBase.Update(gameTime)
- End Sub
- '''
- ''' This is called when the game should draw itself.
- '''
- ''' Provides a snapshot of timing values.
- Protected Overrides Sub Draw(ByVal gameTime As GameTime)
- GraphicsDevice.Clear(Color.CornflowerBlue)
- ' TODO: Add your drawing code here
- MyBase.Draw(gameTime)
- End Sub
- End Class
Ich erläutere kurz, wofür die Methoden, sprich Subs, da sind und was da rein kommt:
Die Sub New() ist unser Konstruktor, wie wir ihn auch aus der Anwendungsprogrammierung mit Klassen kennen.
Dort kann man dann Initialisierungen von eigenen Klassen oder auch von Gamekomponenten, worüber ich hier nicht schreiben werde, veranlassen (mir ist kein besseres Wort eingefallen :D)
Die Sub Initialize() ist dafür da, um Einstellungen wie Sichtbarkeit des Cursors (IsMouseVisible (C#)) oder auch den Vollbildmodus (graphics.IsFullScreen (C#) einzustellen.
Die Sub LoadContent() ist dafür da, um Inhalt wie Texturen aus dem Contentprojekt zu laden. Wie z.B so:
VB.NET-Quellcode
- 'Globale Deklaration
- Private textureHero As Texture2D
- Protected Overrides Sub LoadContent()
- ' Create a new SpriteBatch, which can be used to draw textures.
- spriteBatch = New SpriteBatch(GraphicsDevice)
- textureHero = Content.Load(Of Texture2D)("hero") 'hero ist hier der Texturename, wie er im Contentprojekt hinzugefügt wurde. Jedoch ohne Endung
- End Sub
Dann gibt es noch die Sub UnloadContent() - welche aber bei mir fast nie benutzt wird, da ich nichts hab, welches nicht vom Contentmanager geladen wird. Also, dort kann man Sachen unloaden, welche nicht vom Contentmanager geladen werden.
Außerdem dann noch die Sub Update(), welche da ist, um z.B. die Position des Spielers zu verändern - also allgemein Variablen "updaten".
Zu guter letzt, meiner Meinung nach die wichtiges Sub, die Draw()-Methode. Hier wird alles gezeichnet (ausgenommen Gamecomponents).
Teil 3: Anzeigen einer Texture
Wir sind jetzt an dem Punkt angelangt, wo wir mit dem eigentlichen "Spiel" anfangen. Von einem Spiel kann hier noch lange nicht die Rede sein, weil wir erstmals nur eine Textur anzeigen.
Fangen wir mal an
Was wir brauchen
- eine Textur im Content
- eine Texuredeklaration
- ein klein wenig Geduld
Jetzt stellt sich die Frage, jedenfalls für XNA-Anfänger: Wie fügen wir dem Contentprojekt eine Texture hinzu?
Das ist ganz einfach:
- Rechtsklick auf das Contentprojekt (ist das zweite Projekt in der Projektmappe)
- Hinzufügen > Vorhandenes Element (siehe hier)
- Datei auswählen
Nun müssen wir noch unsere Textur global deklarieren (unter die anderen Deklarationen):
So... nun können wir in der Load-Methode laden. Und das geht so:
So. Das wäre geschafft.
Nun müssen wir sie ja auch zeichnen lassen. Das geht in der Draw-Sub:
VB.NET-Quellcode
Wenn ihr nun F5 drückt, bzw. das Programm ausführt, solltet ihr nun einen blauen Hintergrund sehen und drauf eure Texture.
Das wars auch schon wieder. Ich hoffe, ihr könnt damit was anfangen und weitere Tutorials folgen!
Grüße Myrax