如何在 Visual Studio (2013) 中运行 Unity 游戏

Posted

技术标签:

【中文标题】如何在 Visual Studio (2013) 中运行 Unity 游戏【英文标题】:How can i run a Unity Game inside Visual Studio (2013) 【发布时间】: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 以确保它在启动时没有崩溃,如果发生崩溃,请适当处理。 【参考方案1】:

是的,您可以通过命令行参数执行此操作。

您要查找的参数是-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);

【讨论】:

有趣,这种方法有什么缺点吗? 我自己没有尝试过,所以我不完全确定是否所有输入都被适当地捕获并提供给 Unity 实例。那将是需要注意的事情。但如果这样可行,应该没问题。 -parentHWND 自 Unity 4.6 起已被弃用和删除。 不是真的 afaik @user169771,除非你能告诉我一个来源。它在 4.6 中被暂时删除,但作为 5.0.1 的一部分重新添加。我最近没有检查它是否仍然存在,但文档似乎表明是这种情况。

以上是关于如何在 Visual Studio (2013) 中运行 Unity 游戏的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建

visual studio 2013 wpf 添加窗口加载和关闭函数

如何在visual studio 2013中设置角度2?

如何在 Visual Studio 2013 中使用 NuGet 3.0?

如何在 Visual Studio 2013 中创建多项目模板?

如何使用 Visual Studio 2013 开发 Sharepoint Webpart