2010-01-29 65 views
5

我已經閱讀過很少的地方,可以將XNA和WPF結合起來。 我個人需要的是一個遊戲/地圖編輯器,它實際上是遊戲本身(將引擎在後臺運行),因爲地圖系統將對象的序列化版本寫入XML,稍後加載。WPF <-> XNA - 如何將這兩種技術結合起來?

我的問題是,我想要一個標準的應用程序,這會在後臺運行的引擎,並作爲用戶從前端創建它們創造遊戲資產,後來它們序列化並投入XML。

這也派上用場,如果有可能從遊戲運行WPF,對於UI,如果任何人有任何這方面的經驗,如果他/她會分享它,我會很感激。

很快:我怎樣才能讓WPF(或winforms)應用程序,它的XNA代碼運行在其控制之一,並在後臺?

+1

我覺得你試圖做類似的東西這是什麼人做了:http://www.youtube.com/watch?v=KRNI8NO9VNQ 您可以嘗試與他聯繫,瞭解他如何合併XNA和WPF。 – zfedoran 2010-01-30 16:42:44

+0

感謝您的鏈接,看起來棒極了,我可能會聯繫他,強硬我需要的東西不那麼複雜,只適用於2D環境。 – Johnny 2010-01-30 23:21:44

回答

1

我不知道有人將WPF控件嵌入到XNA遊戲窗口中。這將是一件非常困難的事情,因爲它們都使用DirectX進行渲染。既然你可以用XNA來做任何事情,那將會使WPF重疊並且非常困難。如果您正在尋找遊戲內控件,請嘗試使用NeoForce

以另一種方式走得更簡單(閱讀:實際支持)。我知道您可以將XNA窗口嵌入到Windows用戶控件中 - 請參閱this以進行快速演示。我使用了一種類似於我的遊戲編輯器的技術。不幸的是,直接與WPF集成也會很麻煩(因爲你不能將WPF控件放在XNA GameWindow中)。但是,您可以將該控件嵌入到WindowsFormsHost中,並且該控件可能很好地工作(從未嘗試過)。

顯然,這不會在Xbox 360上工作,因爲WinForms和WPF不可有,但你通常不會把你的編輯器360反正。

ALSO:我希望您在運行時不使用XML序列化來加載遊戲文件 - 這就是XNA內容管道的用途。

+0

不,我至少告訴了我自己有關我選擇合作的技術的基礎知識。我認爲XNA使用ContentPipeline,但是當我添加多個不同**地圖**的組合時,我確實需要XML序列化,以便稍後加載這些內容,因爲它們是必需的(不僅僅是圖像,紋理等等,但是整個實際對象及其特定設置等) – Johnny 2010-01-29 23:06:23

+0

您是否正在使用自定義內容讀取器和編寫器?另外:我提供的解決方案是否適合您? – 2010-01-29 23:15:40

+0

我的工作很快就是讓編輯器人爲地創建遊戲對象(遊戲並未實際運行),就像編碼器所做的一樣,並且稍後將其序列化以便保存。遊戲擁有應該重新創建這些對象的反序列化代碼,就像它們在編輯器中一樣。 這個想法可能有效嗎? BTW:+1指出什麼是可能的,什麼不可以,對於NeoForce(以前我知道它,但它也很好,你也指出了它)。 – Johnny 2010-01-29 23:22:36

0

您是否嘗試過創建一個WPF應用程序,然後加入XNA引用呢?

你應該能夠做到這一點,然後創建一個從遊戲對象繼承的類並將它放入您的WPF應用程序。

WPF有很多的DirectX的直接訪問,以及相機和很多你需要只寫遊戲在WPF的東西。也許只是使用XNA方法進行一些計算。

我可以肯定地看到不止一種方法來剝皮這隻貓。

+0

呃引擎已經中途完成了,我想我會堅持下去,但是我希望XNA需要一些初始化,比如啓動項目附帶的Game1.cs文件。那麼我怎樣才能在同一個項目中初始化WPF和XNA? – Johnny 2010-01-29 22:10:48

+0

如果你還沒有完全重寫你的遊戲引擎十幾次,那麼它還沒有完成:D 如果你正在尋找非wpf內容編輯器的insipration,Xbox Live Arcade中的Trials遊戲有一個夢幻般的內置編輯器,遊戲軌道編輯器。 另外,僅僅因爲沒有人將WPF控件放入XNA遊戲並不意味着它無法完成。 WPF和XNA就像其他任何類一樣。我會對任何一個說你不能將它們組合起來的人持懷疑態度。 – Eric 2010-02-03 01:33:40

0

檢查出這個線程上的XNA論壇:http://forums.xna.com/forums/p/1122/6455.aspx

它將1)給你的,爲什麼這種整合是如此麻煩的想法和2)向您展示如何舉辦一個WPF窗體上的XNA控制(看爲ZMan的職位)。至於在XNA中使用WPF進行GUI渲染,我不會屏住呼吸。微軟真的沒有什麼理由支持這一點,並且控制檯GUI體驗與用於指向點擊的API並無太大關係。

2

我在另一個問題張貼了這個,但似乎有很多關於如何整合在XNA般的控制問題WPF。我閱讀了Nick Gravelyn的博客和Arcane.Xna文章,並設法開發出類似於兩者的完全相似的Microsoft.Xna.Framework.Game,同時提供了WPF兼容性。你甚至可以實例化多個遊戲類,如果你的願望:

https://xnaml.codeplex.com/

相關問題