展示类项目通常都会用到,点击标题栏的最大化按钮,期望能够全屏而非最大化窗口,奈何改了N种设置,查了墙内墙外,居然都没有做这个的,除非自己写一个标题栏。
坑啊,实在是坑。
这里给大家一个解决方案,先获取屏幕的实际宽高,当用户点击最大化窗口的时候,Screen.currentResolution.width会等于Screen.width,而通过手动拖拽的话,这俩数值是没法相等的(手动拖窗口总会比最大窗口小一些),所以这俩相等的时候,调用一下全屏就行了。
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FullScreenTool : MonoBehaviour
{
//屏幕宽高
int screenWidth = 0;
int screenHeight = 0;
//是否全屏状态
bool isFullScreen = false;
void Awake()
{
//获取屏幕宽高
screenWidth = Screen.currentResolution.width;
screenHeight = Screen.currentResolution.height;
//修改默认程序窗体大小(因为用户调整大小后,Unity会在PlayerPrefs记录下来,下次打开的时候会使用之前记录的数值,这里期望每次打开都是窗口模式固定分辨率)
Screen.SetResolution(1800, 750, UnityEngine.FullScreenMode.Windowed);
}
void Start()
{
}
void Update()
{
if (!isFullScreen && Screen.width.Equals(screenWidth))
{
//监听如果是非全屏状态,并且Screen.width和屏幕width相等即为点击了最大化按钮,将屏幕改为全屏
isFullScreen = true;
Screen.SetResolution((int)(screenWidth), (int)(screenHeight), UnityEngine.FullScreenMode.FullScreenWindow);
}
else if (isFullScreen && !Screen.fullScreen)
{
//非全屏时isFullScreen设置为false
isFullScreen = false;
}
if (Input.GetKey(KeyCode.Escape))
{
if (Screen.fullScreen)
{
//ESC退出全屏
Screen.SetResolution(1800, 750, UnityEngine.FullScreenMode.Windowed);
Screen.fullScreen = false; //退出全屏
}
}
}
}
网友评论