2010-10-29 67 views
1

我目前正在爲我的3D遊戲製作地圖編輯器,但我在使用Microsoft.Xna.Framework.Game時遇到了一些問題。結合Windows窗體和XNA,但缺乏「遊戲」實例

我的3D引擎存儲在一個庫中,它的構造函數需要Game實例和GraphicsDevice。 GraphicsDevice不是問題,因爲我使用了來自App Hub(link text)的一些示例,但使用「Game」不包含在其中。有誰知道我會如何解決這個問題?謝謝:)

+0

是的,我已經試過:) – Basic 2010-10-29 09:35:59

+0

你可以發佈你的代碼? – 2010-10-29 09:37:11

+0

它基本上只是從http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1的代碼,但我的庫的構造函數如下所示:public 3DEngine(Game gameInstance,GraphicsDevice graphicsDevice) – Basic 2010-10-29 09:44:31

回答

2

幾乎整個WinForms示例的一點是刪除使用Game(和Microsoft.Xna.Framework.Game程序集)。 Game類可以完成您可能不想在編輯器中發生的事情。

我建議修改您的3D引擎,以便它不需要Game類的實例,以便創建。

無論如何,你在遊戲中使用什麼? A ContentManager,也許?只需直接傳入即可。

但是,如果您確實必須引用Game類,請將Microsoft.Xna.Framework.Game程序集的引用添加到您的項目中。通過右鍵單擊解決方案資源管理器中的項目,選擇添加引用並在.NET程序集列表中找到它。確保你得到正確的版本。

1

我也是寫在XNA一個3D引擎,被稱爲「Vanquish

現在,我已經看到你的構造函數,你需要從這個刪除Game變量。在您的引擎中創建一個名爲Instance的變量public static。然後,在構造函數中添加以下內容:

Instance = this;

從你的WinForm應用程序,當你需要使用Game您可以使用engine.Instance

+0

當我要在XNA遊戲中使用引擎時,這會起作用嗎? – Basic 2010-10-29 09:56:59

+0

是的。您將可以從Instance變量訪問Game類。 – 2010-10-29 09:58:19

+0

甜蜜,非常感謝:)你的引擎看起來非常棒; D在進一步的開發中祝你好運! – Basic 2010-10-29 09:59:46