Unity 多屏幕分辨率处理
程序员文章站
2023-12-31 14:24:52
...
当只有一个屏幕的时候,修改分辨率及位置
//这里设置Windows位置
[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 GetForegroundWindow();
private const uint SWP_SHOWWINDOW = 0x0040;
void Start(){
int width=1920,height=860;
Screen.SetResolution(width,height,false,60);//设置主屏的分辨率 可以进行动态的更新分辨率
StartCoroutine(SetPostion(0,110,width,height));// 110是根据 (1080-860)/ 2 =110 得出的数据进行居中,这个只做位置选定
}
//设置窗口位置
IEnumerator SetPostion(int posx,int posy,int width,int height){
yield return new WaitForSeconds(0.1f);
bool result = SetWindowPos(GetForegroundWindow(),0,posx,posy,width,height,SWP_SHOWWINDOW)
}
当有多个屏幕时
1.主屏幕使用代码,和一个屏幕时一样 (上面的设置完全一样)
Screen.SetResolution(1920,860,false,60);//设置主屏的分辨率 可以进行动态的更新分辨率
。。。
2.分屏幕使用代码 ()
Display.display[1].Activate(1920,860,60);//先进行**选择分辨率大小
Display.display[1].SetParams(1920,860,0,110);// 110是根据 (1080-860)/ 2 =110 得出的数据进行居中,这个只做位置选定