西西軟件下載最安全的下載網(wǎng)站、值得信賴(lài)的軟件下載站!

首頁(yè)編程開(kāi)發(fā)其它知識(shí) → 在Windows 7系統(tǒng)中安裝和配置MonoGame

在Windows 7系統(tǒng)中安裝和配置MonoGame

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/2/26 23:25:19字體大。A-A+

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: MonoGame

  • 類(lèi)型:遠(yuǎn)程監(jiān)控大。4.6M語(yǔ)言:中文 評(píng)分:5.6
  • 標(biāo)簽:
立即下載

MonoGame是一個(gè) Microsoft XNA 4 Framework 的開(kāi)源跨平臺(tái)實(shí)現(xiàn)。 目標(biāo)是讓為 Xbox 360, Windows & Windows Phone上開(kāi)發(fā)的XNA游戲移植到 iOS, Android, Mac OS X, Linux 以及 Windows 8 Metro上。OUYA以及PlayStation Mobile 的支持也在計(jì)劃中。

MonoGame是XNA的一個(gè)開(kāi)源實(shí)現(xiàn),目前最新的安裝版本是3.0,只需要到http://monogame.codeplex.com/releases/view/100041下載安裝就行了,它支持Visual Studio 2010/2012的開(kāi)發(fā)模板。事實(shí)上使用MonoGame的話是無(wú)需安裝XNA的,但現(xiàn)在的問(wèn)題是目前MonoGame還不支持Content的編譯,比如無(wú)法將那些Sprite Font、Texture2D以及Audio編譯成xnb的文件以供MonoGame使用。我的測(cè)試平臺(tái)是Windows 7的,至于其它平臺(tái)下是什么情況我也沒(méi)去深究了。本文大致介紹一下在Windows 7下安裝和配置MonoGame遇到的問(wèn)題以及解決辦法。

無(wú)法加載openal32.dll的問(wèn)題

安裝完MonoGame 3.0以后,打開(kāi)Visual Studio 2012,創(chuàng)建一個(gè)MonoGame Windows OpenGL Project:

創(chuàng)建成功后,直接F5運(yùn)行,然后就直接報(bào)錯(cuò):

明顯是缺少動(dòng)態(tài)鏈接庫(kù)。要解決這個(gè)方法其實(shí)很簡(jiǎn)單,直接到http://connect.creativelabs.com/openal/Downloads/oalinst.zip把OpenAL的安裝包下載下來(lái)安裝就行了。

在MonoGame中使用xnb文件

上面說(shuō)過(guò),目前MonoGame還不支持Content Pipeline的編譯功能,但它能夠讀取并使用由XNA所產(chǎn)生的xnb文件。因此只能通過(guò)其它方式將資源編譯成xnb文件然后再在MonoGame中引用。一般有兩種方法將Content編譯成xnb文件,但這兩種方法都需要安裝XNA。

方法一:在安裝了XNA之后,直接使用Visual Studio 2010(XNA默認(rèn)只支持2010)創(chuàng)建一個(gè)Windows Game項(xiàng)目,然后將你需要編譯成xnb的文件加入Content項(xiàng)目后編譯,再將編譯后的xnb文件復(fù)制到你的MonoGame項(xiàng)目的Content目錄中

方法二:到http://xnacontentcompiler.codeplex.com/下載這個(gè)工具,這個(gè)工具也需要XNA的支持,只不過(guò)你可以直接使用這個(gè)工具對(duì)指定的資源進(jìn)行編譯,而無(wú)需再打開(kāi)一個(gè)Visual Studio 2010。我比較喜歡這種方式

在將編譯好的xnb文件復(fù)制到MonoGame項(xiàng)目的Content目錄中后,記得將Copy to Output Directory設(shè)置為Copy if newer:

現(xiàn)在,讓我們來(lái)寫(xiě)一段使用Sprite Font的代碼。

首先定義一個(gè)私有字段:

1SpriteFont font;

然后,在LoadContent方法中初始化這個(gè)font字段:

/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);

// TODO: use this.Content to load your game content here
font = Content.Load<SpriteFont>("font");
}

接著修改Draw方法,添加字符串輸出代碼如下:

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snaPShot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);

// TODO: Add your drawing code here
spriteBatch.Begin();
spriteBatch.DrawString(font, "Hello World", Vector2.Zero, Color.Yellow);
spriteBatch.End();
base.Draw(gameTime);
}

好了,按F5,編譯運(yùn)行,一切正常!不過(guò)在退出游戲的時(shí)候,報(bào)錯(cuò)了:

這是個(gè)非常嚴(yán)重的問(wèn)題,從錯(cuò)誤信息上看,貌似MonoGame 3.0有個(gè)很大的缺陷:很有可能是在撤銷(xiāo)已加載的資源時(shí),試圖去刪除一個(gè)已經(jīng)被GC回收了的對(duì)象所致。

修復(fù)Attempted to read or write protected memory的問(wèn)題

一番Google之后,得知最新版本的源代碼中已經(jīng)修復(fù)了這個(gè)問(wèn)題,但是還沒(méi)有發(fā)布安裝版本。沒(méi)轍,直接下載源代碼編譯算球。

首先下載源代碼,可以使用git,也可以直接到https://github.com/mono/MonoGame下載zip包。我是直接用git clone的最新代碼,然后找到代碼目錄中的MonoGame.Framework.WindowsGL.sln解決方案文件,并用Visual Studio 2012打開(kāi)以后編譯一下(記得編譯成Release的版本)。最后,將獲得的MonoGame.Framework.dll文件覆蓋到C:\Program Files (x86)\MonoGame\v3.0\Assemblies\WindowsGL目錄下即可。

現(xiàn)在,我們的“游戲”就可以在Windows 7下完美運(yùn)行了:

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
    推薦文章

    沒(méi)有數(shù)據(jù)