解决:“Unity打包非全屏游戏,运行时仍然全屏” 的问题

本文介绍了在Unity中创建非全屏游戏时遇到的问题,即游戏打包后仍然全屏显示。通过固定分辨率设置和清理注册表相关键值,可以解决这一问题。详细步骤包括在Unity的Player Settings中取消全屏选项,以及在注册表中删除特定文件夹来避免全屏强制行为。

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

前言

        我们在使用Unity做游戏的时候,会碰到一些需要固定分辨率的游戏,可是有时候在固定了分辨率以后,打包出来的项目却一直都是全屏的,那么有什么方法解决呢?

固定分辨率

        首先需要固定分辨率,我们可以从左上角File → Build Settings → Player Settings → Resolution and Presentation中将默认填满屏幕取消勾选,并设置宽高。

解决打包后依然全屏的问题

### Unity打包EXE实现全屏模式与双屏设置 为了在Unity中创建支持全屏模式并能够在双屏环境中运行的应用程序,可以通过调整项目配置和编写脚本来完成这一目标。以下是详细的说明: #### 配置Build Settings 在Unity编辑器中,进入`File -> Build Settings`菜单,选择平台为Windows,并点击Switch Platform切换至该平台。随后,在Player Settings中可以找到以下选项: - **Company Name**: 设置公司名称,用于区分不同项目的注册表路径。 - **Product Name**: 设置产品名称,同样影响注册表路径。 这些参数会影响应用程序的窗口状态存储位置[^1]。因此,建议为每个项目分配唯一的ProductName,以防止多个应用共享同一注册表项而导致冲突。 #### 脚本实现全屏与双屏功能 ##### 全屏模式 通过调用`Screen.fullScreenMode`属性可以控制窗口的行为。例如,将其设为`FullScreenWindow`即可移除标题栏并最大化显示窗口。此外,还可以利用`Screen.SetResolution()`函数指定具体的分辨率和是否启用全屏模式。 ```csharp void Start() { Screen.fullScreenMode = FullScreenMode.FullScreenWindow; Screen.SetResolution(1920, 1080, true); } ``` 上述代码片段实现了基本的全屏操作[^4]。 ##### 多显示器支持 对于多显示器环境的支持,则需借助`Display`类及其成员方法。具体而言,遍历所有可用显示屏并通过激活它们来扩展渲染区域。如下所示是一个简单的例子: ```csharp void Start() { for (int i = 0; i < Display.displays.Length; i++) { Display.displays[i].Activate(); if(i != 0){ Screen.SetResolution(Display.displays[i].renderingWidth, Display.displays[i].renderingHeight,true); } } } ``` 此段代码不仅启用了额外的显示器,还单独设置了各屏幕的最佳分辨率[^3]。注意首次迭代通常代表主显示器,可能不需要再次设定其分辨率。 #### 注册表处理 有由于某些原因可能导致保存于注册表内的窗口尺寸数据异常,进而引发不可预期的结果。此可通过手动清理相关键值解决问题。路径大致位于`\HKEY_CURRENT_USER\Software\[CompanyName]\[ProductName]`下。不过实际开发过程中应尽量减少此类情况的发生概率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

午后的貓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值