Hello, XNA World! 第一個程式

  • 2797
  • 0

XNA跟以往的視窗程式不同,視窗程式是以事件驅動為主,並且有很多控制項可以使用,而XNA則是以遊戲迴圈為主,所有的圖形、文字是用SpriteBatch類別繪製。

XNA跟以往的視窗程式不同,視窗程式是以事件驅動為主,並且有很多控制項可以使用,而XNA則是

以遊戲迴圈為主,所有的圖形、文字是用SpriteBatch類別繪製。

 

首先,我們要建立一個SpriteFont資源來定義文字的字體、大小、字符範圍…等。

 

新增項目

image

 

選擇Sprite Font,新增

image

 

 

這個文字資源擋事實上是一個XML文件,定義文字字體、大小…..

image

 

 

我們在Game1類別內宣告四個變數,分別為文字內容、文字資源、文字顏色、文字位置。


Public Class Game1
    Inherits Microsoft.Xna.Framework.Game

    Private WithEvents graphics As GraphicsDeviceManager
    Private WithEvents spriteBatch As SpriteBatch

    Dim text As String = "Hello, XNA World!"
    Dim textFont As SpriteFont
    Dim textColor As Color = Color.Red
    Dim textPosition As Vector2 = New Vector2(100, 100)

End Class

 

使用Content.Load()來載入資源,(Of SpriteFont)是指載入文字資源,(“SpriteFonte1”)是資源名稱。


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
    textFont = Content.Load(Of SpriteFont)("SpriteFont1")
End Sub

 

繪製文字要放在Begin()和End()之間,DrawString()傳入了文字定義、文字內容、文字位置、文字顏色。


Protected Overrides Sub Draw(ByVal gameTime As GameTime)
    GraphicsDevice.Clear(Color.CornflowerBlue)

    ' TODO: Add your drawing code here
    spriteBatch.Begin()
    spriteBatch.DrawString(textFont, text, textPosition, textColor)
    spriteBatch.End()

    MyBase.Draw(gameTime)
End Sub

 

程式執行結果如下,我們又往前一步了。

screenshot_10-23-2011_23.14.20.520