Unity 代碼控制 遊戲視窗放大、縮小、還原

使用 user32.dll 實現 遊戲視窗的 最小化、最大化和還原窗口 的功能

using System;
using System.Runtime.InteropServices;

/// <summary>
/// 窗口控制器類,提供最小化、最大化和還原窗口的方法。
/// </summary>
public static class WindowController
{
    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);

    [DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();

    const int SW_SHOWMINIMIZED = 2; // 最小化, 激活
    const int SW_SHOWMAXIMIZED = 3; // 最大化
    const int SW_SHOWRESTORE = 1; // 還原

    /// <summary>
    /// 最小化當前窗口。
    /// </summary>
    public static void MinimizeWindow()
    {
        ShowWindow(GetForegroundWindow(), SW_SHOWMINIMIZED);
    }

    /// <summary>
    /// 最大化當前窗口。
    /// </summary>
    public static void MaximizeWindow()
    {
        ShowWindow(GetForegroundWindow(), SW_SHOWMAXIMIZED);
    }

    /// <summary>
    /// 還原當前窗口。
    /// </summary>
    public static void RestoreWindow()
    {
        ShowWindow(GetForegroundWindow(), SW_SHOWRESTORE);
    }
}

使用範例

WindowMinimizer.cs

using UnityEngine;

/// <summary>
/// 窗口最小化類,在遊戲啟動時最小化整個遊戲。/// </summary>
public class WindowMinimizer : MonoBehaviour
{
    void Start()
    {
        WindowController.MinimizeWindow();
    }
}

用於Client、Server一體遊戲。
Client連上區域網時,沒有偵測到Server,就開一個Server,並將Server最小化避免搶佔Client螢幕