C#和C++(或任何託管和非託管語言之間)之間的通信是一個痛苦的屁股,除非你有非常非常好的理由使用,應儘量避免。
進行通信,可以用管道,WCF,COM,P/Invoke的和其他一些定製的商業選擇。你可以在網上搜索。在我工作的引擎中,我們使用由多個進程共享的匿名MemoryStream。
但是總會回來的一個問題是,在C++的任何結構變化,你需要反思那些在C#。就像如果你改變一個方法所採用的param或者一個結構的定義一樣。有一些解決方案可以自動「模擬」C#,使其始終與C++保持同步,但實施起來非常昂貴且繁重。
現在,爲什麼你不應該打擾!誠然,你不會找到高於C++的高端商業引擎。虛幻? C++。資源? C++。孤島危機? C++。因爲C++提供了任何託管語言無法提供的性能。它還允許直接控制對象的創建和刪除的內存和微控制。
那麼,爲什麼你不應該在意?因爲,除非你計劃發佈三重A遊戲的規模或範圍的刺客信條,半條命或天際,XNA框架下的C#將提供充足的空間和性能。遠遠超過你應該需要的。如果實際上存在性能問題,那麼託管語言不是問題,並且應該還有大量的優化工作需要完成。如果你在C#中遇到性能問題,那麼你可能會在C++中擁有它們。
XNA還可以在Windows,Xbox和不同的Microsoft便攜式設備上發貨。除此之外,採取DirectX限制你到那些平臺無論如何。
你在找[COM objects](http://www.csharphelp.com/2006/08/building-com-objects-in-c/)嗎? –
告訴我你的引擎應該用C++的原因。普通C++不是.NET Framework的一部分。如果您引用託管C++,那麼它與C#相同,但是使用C++語法。 – LightStriker
我想你並不需要直接從你的編輯器傳遞對象到你的遊戲引擎。相反,您可能想要將在編輯器中創建的對象保存到文件中,然後能夠從C++代碼中讀取對象。爲此,JSON或XML應該是有用的。 – piokuc