XNA跟以往的視窗程式不同,視窗程式是以事件驅動為主,並且有很多控制項可以使用,而XNA則是以遊戲迴圈為主,所有的圖形、文字是用SpriteBatch類別繪製。
XNA跟以往的視窗程式不同,視窗程式是以事件驅動為主,並且有很多控制項可以使用,而XNA則是
以遊戲迴圈為主,所有的圖形、文字是用SpriteBatch類別繪製。
首先,我們要建立一個SpriteFont資源來定義文字的字體、大小、字符範圍…等。
新增項目
選擇Sprite Font,新增
這個文字資源擋事實上是一個XML文件,定義文字字體、大小…..
我們在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
程式執行結果如下,我們又往前一步了。