美文网首页
Unity windows最大化全屏

Unity windows最大化全屏

作者: ShawnWeasley | 来源:发表于2020-10-22 13:11 被阅读0次

展示类项目通常都会用到,点击标题栏的最大化按钮,期望能够全屏而非最大化窗口,奈何改了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;  //退出全屏   
            }
        }
    }
}

相关文章

网友评论

      本文标题:Unity windows最大化全屏

      本文链接:https://www.haomeiwen.com/subject/ywclmktx.html