2013-08-16 110 views
3

我一直想這一段時間,我相信我在做正確的一切字體(至於代碼而言):加載使用monogame與VS2012/13

SpriteFont font = Content.Load<SpriteFont>("Arial"); 

然而,然後我讀到你需要使用我嘗試過的工具編譯字體,但它們都是從擴展名* .spritefont轉換而來的。這似乎沒有在我的機器上,雖然經過一番研究,我確實設法弄到了幾個TTF文件。

一些進一步的研究表明,如果我從VS中選擇「新文件」,我應該可以選擇創建一個新的spritefont。這似乎並不是這種情況,因爲它不在VS2012或13的列表中。

我還沒有理由非常使用字體,所以我可能會犯一個明顯的錯誤。任何想法是什麼?

回答

10

好了,這裏是你需要知道什麼是快速的破敗:

  1. 您可能已經發現tutorials about how to use sprite fonts in XNA
  2. 你似乎什麼是失蹤是XNA Game Studio,一旦你安裝了您將能夠在Visual Studio中選擇選項。
  3. 請注意,您實際上所做的是「內容項目」。這將用於創建spritefont文件並將它們編譯成XNB文件用於MonoGame。您還需要使用「假」XNA遊戲項目來執行此操作。
  4. 編譯完XNB文件後,需要將它們添加到MonoGame項目的Content文件夾中,並將它們設置爲Content/Copy(如果屬性窗口中的內容較新)。

之後,你的代碼應該工作。下面是用最低限度上述實例項目: https://dl.dropboxusercontent.com/u/82020056/MonoGameSpriteFonts.zip

或者,有也完全跳過XNA內容項目並使用MonoGame與原始資產文件的選項。這就是我在遊戲中的做法,你可以找到a tutorial on my blog

編輯:我認爲這是足夠重要的包括在答案; MonoGame團隊目前正在研究解決方案,以便XNA Game Studio不再需要。它看起來像字體已經覆蓋。

https://github.com/mono/MonoGame/wiki/Content-Build-Pipeline

XNA 4.0的內容的端口構建流水線是目前正在開發中。這將允許將資產編譯爲MonoGame支持的所有平臺的優化二進制格式,而無需將XNA Game Studio 4.0安裝在Windows PC上。資產編譯將在項目建立時完成,並在Visual Studio(2010和2012)和MonoDevelop(Windows,Mac OS X和Linux)中受支持。

+1

我遇到過XNA Game Studio,但它似乎需要VS2010,所以我認爲這已過時。我真的需要安裝VS2010嗎? –

+2

如果你想使用XNA內容管道,那麼是的,你目前需要Visual Studio 2010.XNA並不正式支持Visual Studio的新版本,並且永遠不會,因爲微軟已經放棄了對框架的支持。 –

+1

我只想補充一點,MonoGame團隊正在努力取代內容管道,因此它不應該總是這樣。 https://github.com/mono/MonoGame/wiki/Content-Build-Pipeline – craftworkgames

4

如果你只是想畫一個spritefont你不需要VS2010或XNA工作室。

首先手動創建一個.spritefont xml。你可以使用這裏的例子: http://msdn.microsoft.com/en-us/library/bb447759.aspx

然後使用XNA內容編譯器將它編譯爲一個。XNB: http://xnacontentcompiler.codeplex.com/

這裏是一個很好的教程: http://www.youtube.com/watch?v=BwtQn02oy6A 但要注意,你並不需要XNA工作室。手動編輯.spritefont xml非常簡單。

不要忘記設置內容目錄:Content.RootDirectory =「Content」; 而.xnb屬性應該設置爲'Content'和'Always Always'(至少對於我的Windows 8 MonoGame項目是必需的)

0

我不認爲你需要XNA了。

只需雙擊Content.mgcb打開內容編輯器。

右鍵單擊內容 - >添加 - >新建項目 - > Spritefont描述,爲其指定一個名稱,例如, 「testfont」

裝入SpriteFont類遊戲:

var font = Content.Load<SpriteFont>("testfont"); 

使用它!

spriteBatch.DrawString(font, "hello", new Vector2(10, 10), Color.AliceBlue); 
+0

我們是否需要編譯testfont到XNB? –

+0

似乎在這裏工作。編譯器會拋出一個錯誤,就好像它沒有訪問Content文件夾一樣(顯然這樣做是因爲它將spritefont編譯成一個.xnb,但它仍然不會在遊戲中繪製)。 DrawString方法沒有任何錯誤,但沒有繪製字符串。奇怪的。任何人都有這個? – Pyroglyph