XNA und VB.NET - Der Anfang

    • VB.NET

    Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Chriis.

      XNA und VB.NET - Der Anfang

      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:
      • 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:
      Code

      VB.NET-Quellcode

      1. '''
      2. ''' This is the main type for your game
      3. '''
      4. Public Class Game1
      5. Inherits Microsoft.Xna.Framework.Game
      6. Private WithEvents graphics As GraphicsDeviceManager
      7. Private WithEvents spriteBatch As SpriteBatch
      8. Public Sub New()
      9. graphics = New GraphicsDeviceManager(Me)
      10. Content.RootDirectory = "Content"
      11. End Sub
      12. '''
      13. ''' Allows the game to perform any initialization it needs to before starting to run.
      14. ''' This is where it can query for any required services and load any non-graphic
      15. ''' related content. Calling MyBase.Initialize will enumerate through any components
      16. ''' and initialize them as well.
      17. '''
      18. Protected Overrides Sub Initialize()
      19. ' TODO: Add your initialization logic here
      20. MyBase.Initialize()
      21. End Sub
      22. '''
      23. ''' LoadContent will be called once per game and is the place to load
      24. ''' all of your content.
      25. '''
      26. Protected Overrides Sub LoadContent()
      27. ' Create a new SpriteBatch, which can be used to draw textures.
      28. spriteBatch = New SpriteBatch(GraphicsDevice)
      29. ' TODO: use Me.Content to load your game content here
      30. End Sub
      31. '''
      32. ''' UnloadContent will be called once per game and is the place to unload
      33. ''' all content.
      34. '''
      35. Protected Overrides Sub UnloadContent()
      36. ' TODO: Unload any non ContentManager content here
      37. End Sub
      38. '''
      39. ''' Allows the game to run logic such as updating the world,
      40. ''' checking for collisions, gathering input, and playing audio.
      41. '''
      42. ''' Provides a snapshot of timing values.
      43. Protected Overrides Sub Update(ByVal gameTime As GameTime)
      44. ' Allows the game to exit
      45. If GamePad.GetState(PlayerIndex.One).Buttons.Back = ButtonState.Pressed Then
      46. Me.Exit()
      47. End If
      48. ' TODO: Add your update logic here
      49. MyBase.Update(gameTime)
      50. End Sub
      51. '''
      52. ''' This is called when the game should draw itself.
      53. '''
      54. ''' Provides a snapshot of timing values.
      55. Protected Overrides Sub Draw(ByVal gameTime As GameTime)
      56. GraphicsDevice.Clear(Color.CornflowerBlue)
      57. ' TODO: Add your drawing code here
      58. MyBase.Draw(gameTime)
      59. End Sub
      60. 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

      1. 'Globale Deklaration
      2. Private textureHero As Texture2D
      3. Protected Overrides Sub LoadContent()
      4. ' Create a new SpriteBatch, which can be used to draw textures.
      5. spriteBatch = New SpriteBatch(GraphicsDevice)
      6. textureHero = Content.Load(Of Texture2D)("hero") 'hero ist hier der Texturename, wie er im Contentprojekt hinzugefügt wurde. Jedoch ohne Endung
      7. 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:
      1. Rechtsklick auf das Contentprojekt (ist das zweite Projekt in der Projektmappe)
      2. Hinzufügen > Vorhandenes Element (siehe hier)
      3. Datei auswählen


      Nun müssen wir noch unsere Textur global deklarieren (unter die anderen Deklarationen):

      VB.NET-Quellcode

      1. Private testTexture As Texture2D 'neue Variable mit dem Typ Texture2D anlegen


      So... nun können wir in der Load-Methode laden. Und das geht so:

      VB.NET-Quellcode

      1. testTexture = Content.Load(Of Texture2D)("texturename") 'Lädt die Textur aus dem Content - texturename muss durch den Texturennamen ersetzt werden


      So. Das wäre geschafft.
      Nun müssen wir sie ja auch zeichnen lassen. Das geht in der Draw-Sub:

      VB.NET-Quellcode

      1. spriteBatch.Begin() 'sagt, dass die spriteBatch zeichnen kann
      2. spriteBatch.Draw(testTexture, New Rectangle(0, 0, testTexture.Width, testTexture.Height), Color.White) 'zeichnet das ganze auf 0;0, anderes sollte klar sein
      3. spriteBatch.End() 'sagt, dass die spriteBatch nicht mehr zeichnen kann


      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
      in der content-projektmappe die textur mit einem einfach-links-click anwhälen und in der .load methode den asset-name anegeben, den du dem eigenschaften bereich, der sich standartmäßig unterhalb des projekt-explorers befinden sollte, entnehmen kannst...
      hey ,
      ich wollte Windows Phone SDK 7.1 instalieren , dan kam eine meldung das ich Visual Studio 2010 Service pack 1 instalieren müsste...
      Hab das ganze runtergeladen und versucht zu instalieren , es kam folgende fehlermeldung "Es ist ein Kritischer fehler aufgetretten" , klasse fehlerbeschreibung ^^
      ich habe Visual studio Professional , und zum testen auch Express drauf gemacht , funzt nicht.
      weiß einer woran das liegt ? probiere jz schon seit gestern 18uhr rum...-.-'

      lg

      //Edit
      habs geschaft - Neues system und alles neu aufgespielt.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Nsjdvv“ ()

      Hey,
      Tut mir leid das ich das jetzt nochmal ausgraben muss aber bei wird werden Vorlagen nicht angezeigt. Hab Xna Game Studio 4.0 und das Windows Phone SDK 7.1 installiert.
      Aber bei Visual Basic hat sich leider nichts geändert.
      Siehe hier:
      gyazo.com/5d1528f9f731c4794d141c56d727ffce

      Edit: Hab den Fehler schon gefunden. Ich hab in Visual Basic 2010 Express nach den Vorlagen gesucht.
      Sie waren aber im Vs 2010 Express für Windows Phone

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Chriis“ ()