Unity - Windows獲取屏幕分辨率、可用區域


直接搜索最多的就是使用System.Windows.Form.Screen類,但因為unity用的是mono,不能正常使用這個方法
可使用win32api獲取,這里只嘗試了獲取主要屏幕的分辨率,而且沒有處理顯示縮放,后續有需要再添加

dll似乎不需要引入,因為windows平台的一定會有這個庫

// GetSystemMetrics實際獲取的是系統記錄的分辨率,不是物理分辨率,如屏幕2560*1600,顯示縮放200%,這里獲取到的是1280*800
[DllImport("user32.dll", SetLastError = true)]
private static extern int GetSystemMetrics(int nIndex);
private static int SM_CXSCREEN = 0; //主屏幕分辨率寬度
private static int SM_CYSCREEN = 1; //主屏幕分辨率高度
private static int SM_CYCAPTION = 4; //標題欄高度
private static int SM_CXFULLSCREEN = 16; //最大化窗口寬度(減去任務欄)
private static int SM_CYFULLSCREEN = 17; //最大化窗口高度(減去任務欄)

private void Test()
{
    // 屏幕分辨率
    int x = GetSystemMetrics(SM_CXSCREEN);
    int y = GetSystemMetrics(SM_CYSCREEN);

    // 屏幕WorkingArea
    int x1 = GetSystemMetrics(SM_CXFULLSCREEN);
    int y1 = GetSystemMetrics(SM_CYFULLSCREEN);

    // 標題欄高度
    int title = GetSystemMetrics(SM_CYCAPTION);

    // 不最大化、不全屏的最大窗口高度
    int maxHeight = y1 - title;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM