Unity3D跨屏幕、全屏顯示(shì)方法
2019/12/14 點擊:
Unity3D跨屏幕、全屏顯示方(fāng)法,運行(háng)環境:Win10 64bit, Unity3D 2017.3.1
using System;
using System.Collections;
using System.Runtime.InteropServices;
using System.Diagnostics;
using UnityEngine;
using System.Xml.Serialization;public class WindowMod : MonoBehaviour
{
[HideInInspector]
public Rect screenPosition;
[DllImport("user32.dll")]
static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();
const uint SWP_SHOWWINDOW = 0x0040;
const int GWL_STYLE = -16;
const int WS_BORDER = 1;
private int i = 0; void Start()
{
SetWindowLong(GetActiveWindow(), GWL_STYLE, WS_BORDER);
SetWindowPos(GetActiveWindow(), -1, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW);
} void Update()
{
i++;
if(i<5)
{
SetWindowLong(GetActiveWindow(), GWL_STYLE, WS_BORDER);
SetWindowPos(GetActiveWindow(), -1, (int)screenPosition.x, (int)screenPosition.y, (int)screenPosition.width, (int)screenPosition.height, SWP_SHOWWINDOW);
}
}
}
上麵這個腳本,可以使Unity3D窗口全屏,沒有標題欄,通過更改screenPosition的值,還可以使窗(chuāng)口直接在第二個屏幕上啟(qǐ)動(dòng)(x=0, y=0, width=1920, height=1080),或(huò)者(zhě)窗口跨(kuà)越兩個屏(x=0, y=0, width=3840, height=1080)。 如果使用讀取配置文件(jiàn)的方法, 可(kě)以自定義屏幕(mù)分辨率。Windows係統會記錄軟件的窗口大小和(hé)位置,並記錄在注冊表的\HKEY_CURRENT_USER\Software\xxx\yyy 位置,xxx是Unity3D在build設置中的Company Name,yyy是在Build設置中的Product Name。所以如果(guǒ)有時候窗(chuāng)口大小有問題(tí),可以先備份注冊(cè)表,再刪除xxx項。建議每個項目的Product Name不要用默認(rèn)值,否則打包出來的軟件都會對應到(dào)注冊表裏相同的項。
- 上一篇:UNITY3D GUI組件使用例子 2019/12/22
- 下一(yī)篇:Unity3D的射(shè)線碰撞檢測方法總結 2019/12/12
