如何在 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 中使用 NuGet 3.0?