当Untiy最小化后,游戏窗口不会立刻失去焦点,此时依然可以使用Input来获取按键,但是点击其他窗口后,就会失去焦点,此时系统会把按键输入分配到其他窗口里,此时要用windowsAPI获取按键输入,应对两种情况的代如下
[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int vKey);
public const int VK_3 = 0x33; // 数字键3的虚拟键码
public const int VK_NUMPAD3 = 0x63; // 数字键3的虚拟键码
private void Update()
{
if (!Application.isFocused)
{
//如果点了桌面或别的窗口,会触发windowsapi
if (GetAsyncKeyState(VK_3) != 0|| GetAsyncKeyState(VK_NUMPAD3) != 0)
{
RestoreWIndow();//恢复窗口
}
}
else //最小化后,如果没有在别的地方点击鼠标,此时untiy还没有失去焦点,直接按3会触发Untiy输入
{
if (Input.GetKeyDown(KeyCode.Alpha3) || Input.GetKeyDown(KeyCode.Keypad3))
{
RestoreWIndow();//恢复窗口
}
}
}