【发布时间】:2015-06-07 07:51:21
【问题描述】:
我需要能够在 Visual Studio 表单中为我的学校项目运行 Unity 游戏。
我对VS还没有那么好,这种东西对我来说仍然很复杂,我什至不知道这是否可能。
这就是我所拥有的:
这就是我需要的结果:
这甚至可能吗?如果是这样,请如何或指出我正确的方向。
编辑: 找到了怎么做:
[DllImport("user32.dll")]
静态外部 IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
private void button1_Click(object sender, EventArgs e)
{
var clientApplication = Process.Start("C:/Users/ricardo.coelho/Desktop/Unity_VS_Test.exe");
线程.睡眠(500);
SetParent(clientApplication.MainWindowHandle, panel1.Handle);
}
【问题讨论】:
-
附带说明,如果可能,您不应在此处使用 Thread.Sleep,因为它依赖于 PC 组件加载 Unity 的速度。首先,看看 clientApplicartion.WaitForInputIdle() 是否足够。应该是,但如果它不起作用,您应该在调用 SetParent 之前确保 .MainWindowHandle 不为空,如果它为空,您将需要循环直到它不为空;那么您可以在循环内使用 Thread.Sleep 。最好还确保 clientApplication.HasExited 为 false 以确保它在启动时没有崩溃,如果发生崩溃,请适当处理。
标签: visual-studio-2013 unity3d