Unity windows最大化全屏

这篇博客分享了一个在Unity中解决点击标题栏最大化按钮实现全屏而非窗口最大化的问题。作者提供了通过检测屏幕宽高变化来判断是否点击最大化按钮,并在点击时切换到全屏的代码实现。同时,代码还包括了ESC键退出全屏的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值