窗口切换
如果有两个Unity3d的游戏需要通过程序进行窗口切换,Unity3d自身是没有提供相应的函数或者接口去完成这一部分功能,Unity3d窗口的创建和控制都是和平台相关的,所有这部分需要提供调用平台相关的代码,对于Windows程序,需要调用Win32的API来实现。
对于Windows比较熟悉的朋友可能会说,直接调用SetForegroundWindow不就可以的么,但是请注意,该API在很多情况下是不起作用的,特别是跨进程的窗口切换。 详细的内容请参考API的MSDN的官方文档 https://msdn.microsoft.com/en-us/library/windows/desktop/ms633539(v=vs.85).aspx
那如何在Unity3d程序中自动切换窗口呢,其基本事项就是模拟用户通过Alt+Tab按键切换, C++的windows 程序可以参考:
http://www.codeproject.com/Tips/76427/How-to-bring-window-to-top-with-SetForegroundWindo
我在Windows 7 + unity4.6 用的是 方法1,代码如下:
void SetForegroundWindowInternal(HWND hWnd)
{
if(!::IsWindow(hWnd)) return;
BYTE keyState[256] = {