2015-04-02 157 views
0

我需要能夠在Visual Studio窗體內爲我的學校項目運行Unity遊戲。我如何在Visual Studio中運行Unity遊戲(2013)

我不是很好,但VS,這種東西對我來說仍然很複雜,我甚至不知道它是否可能。

這是我有:

這是我需要的結果是:

這甚至可能嗎?如果是這樣,請告訴我如何或指向正確的方向。

編輯: 實測值如何做到這一點:

[的DllImport( 「USER32.DLL」)]
靜態外部的IntPtr的setparent(IntPtr的hWndChild,IntPtr的hWndNewParent);
私人無效的button1_Click(對象發件人,EventArgs的)
{
變種clientApplication =的Process.Start( 「C:/Users/ricardo.coelho/Desktop/Unity_VS_Test.exe」);
Thread.Sleep(500);
SetParent(clientApplication.MainWindowHandle,panel1.Handle);
}

+0

問題作爲一個側面說明,你不應該儘可能使用了Thread.Sleep那裏,因爲它是依賴PC組件的速度加載Unity。 首先,查看clientApplicartion.WaitForInputIdle()是否足夠。它應該是,但如果它不起作用,你應該確保.MainWindowHandle在調用SetParent之前不是null,如果它爲null,你會想要循環,直到它不是;那麼你可以在循環中使用Thread.Sleep。最好還要確保clientApplication.HasExited是false,以確保它在啓動時不會崩潰,並且如果確實如此,則將其適當處理。 – user169771 2016-01-18 16:15:20

回答

0

是的,你可以通過命令行參數來做到這一點。

您正在查找的參數是-parentHWND,作爲stated in the documentation。該文檔還包含一個可以幫助你的例子。

從那裏(在C#應用程序),它是

process = new Process(); 
process.StartInfo.FileName = "Child.exe"; 
process.StartInfo.Arguments = "-parentHWND " + panel1.Handle.ToInt32() + " " + Environment.CommandLine; 
process.StartInfo.UseShellExecute = true; 
process.StartInfo.CreateNoWindow = true; 

process.Start(); 
process.WaitForInputIdle(); 
EnumChildWindows(panel1.Handle, WindowEnum, IntPtr.Zero); 
+0

有趣的是,這種方法有什麼缺點嗎? – Aizen 2015-04-03 03:59:12

+0

我自己沒有嘗試過,所以我不完全確定是否所有輸入都被適當捕獲並提供給Unity實例。這將是值得注意的。但如果這樣的話,它應該沒問題。 – Bart 2015-04-06 12:05:18

+0

-parentHWND在Unity 4.6中顯然已被棄用和刪除。 – user169771 2016-01-18 16:17:34