unity发布exe全屏方法

本文提供了一个简单的步骤指南,说明如何在Unity中使用NGUI将代码挂在UIroot上或场景物体上,并调整屏幕分辨率和全屏模式。通过实现此功能,开发者能够自定义应用程序的显示设置,确保在不同设备上获得最佳视觉体验。

首先 将该代码挂在NGUI的UIroot上或者场景的物体上

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
	public void Awake() {
		Screen.SetResolution(1024, 768, true);//自己想要的分辨率,比如1024*768,true表示全屏
		Screen.fullScreen = true;
	}
}

然后发布,设置如下


<think>我们正在讨论Unity发布时设置窗口分辨率的方法。根据用户提供的信息和引用内容,我们可以总结出几种方法方法1:使用代码动态修改窗口分辨率(需要显示标题栏)-参考引用[1]中的函数`ChangeScreenSizeShow`,它通过调用Win32API来修改窗口样式和分辨率。具体步骤:1.检查当前标题栏状态,如果是隐藏状态则改为显示(通过设置WS_TILEDWINDOW样式)。2.调用`ChangeScreenSize`函数设置窗口的宽度、高度和位置。3.设置标题栏状态为显示。方法2:通过外部配置文件或启动参数设置(引用[2]中提到的方法)-将特定文件(如一个启动配置文件)放在与Assets同级目录下,然后打包。这样双击exe启动时会出现分辨率设置窗口。方法3:使用Unity的PlayerSettings设置(这是常规方法)-在Unity编辑器中,通过File->BuildSettings->PlayerSettings->ResolutionandPresentation进行设置。-FullscreenMode:可以设置为窗口模式(Windowed)或全屏。-设置默认窗口宽度和高度(DefaultScreenWidth/Height)。但是,用户引用的内容中提到了Unity2019以上版本不再支持启动时弹出分辨率设置窗口。因此,常规的PlayerSettings设置分辨率可能不会在启动时弹出窗口选择,而是直接按默认设置启动。所以,引用[2]和[3]提供了一种解决方案,通过一个额外的文件(可能是用来恢复旧版行为)使得打包后的exe在启动时可以设置分辨率。根据用户的需求“Unity发布项目设置窗口分辨率”,我们主要关注两种场景:1.默认分辨率:在发布时就固定窗口分辨率(通过PlayerSettings设置)。2.启动时弹出分辨率设置窗口(需要额外处理,如引用[2])。具体实现方法:###方法一:通过PlayerSettings设置默认分辨率1.打开PlayerSettings(Edit->ProjectSettings->Player)。2.在ResolutionandPresentation部分:-FullscreenMode:选择“Windowed”或“FullscreenWindow”等。-设置DefaultScreenWidth和DefaultScreenHeight(例如1280x720)。3.然后打包。这样发布exe将按此分辨率启动。###方法二:通过代码在运行时设置分辨率可以在游戏启动时(如Start函数中)使用如下代码设置窗口分辨率:```csharpusingUnityEngine;publicclassWindowResolution:MonoBehaviour{publicintwidth=1280;publicintheight=720;publicintposX=100;publicintposY=100;voidStart(){Screen.SetResolution(width,height,false);//第三个参数表示是否全屏//如果需要设置窗口位置,在Unity中不支持直接设置,需要调用WindowsAPI(仅适用于Windows平台)#ifUNITY_STANDALONE_WINSetWindowPosition(posX,posY);#endif}#ifUNITY_STANDALONE_WIN[System.Runtime.InteropServices.DllImport("user32.dll")]privatestaticexternboolSetWindowPos(System.IntPtrhwnd,inthWndInsertAfter,intx,intY,intcx,intcy,intwFlags);[System.Runtime.InteropServices.DllImport("user32.dll")]privatestaticexternSystem.IntPtrGetActiveWindow();privatevoidSetWindowPosition(intx,inty){SetWindowPos(GetActiveWindow(),0,x,y,0,0,0x0001);}#endif}```注意:设置窗口位置需要使用平台相关的API,上述代码仅适用于Windows平台。###方法三:实现启动分辨率弹出窗口(引用[2]的方法)1.下载引用[2]提供的文件(如UnityWindowResize.dll等,或配置文件),放置在与Assets同级的目录下。2.然后打包,这样exe启动时就会弹出一个分辨率设置窗口。但是,由于引用[2]提供的链接需要下载外部文件,可能存在风险。因此,我们可以尝试自己实现一个分辨率选择的启动窗口(在Unity中创建):1.在Unity中创建一个启动界面,包含分辨率下拉菜单和确认按钮。2.在确认按钮的回调中,根据选择的分辨率设置窗口大小和位置。3.然后加载主场景。示例代码(用于启动界面):```csharpusingUnityEngine;usingUnityEngine.UI;usingUnityEngine.SceneManagement;publicclassResolutionWindow:MonoBehaviour{publicDropdownresolutionDropdown;//常见的分辨率列表Resolution[]resolutions;voidStart(){resolutions=Screen.resolutions;resolutionDropdown.ClearOptions();List<string>options=newList<string>();intcurrentResolutionIndex=0;for(inti=0;i< resolutions.Length;i++){stringoption=resolutions[i].width+"x"+resolutions[i].height;options.Add(option);if(resolutions[i].width==Screen.currentResolution.width&&resolutions[i].height==Screen.currentResolution.height){currentResolutionIndex=i;}}resolutionDropdown.AddOptions(options);resolutionDropdown.value=currentResolutionIndex;resolutionDropdown.RefreshShownValue();}publicvoidApply(){ResolutionselectedResolution=resolutions[resolutionDropdown.value];Screen.SetResolution(selectedResolution.width,selectedResolution.height,false);//加载主场景SceneManager.LoadScene("MainScene");}}```###注意事项-如果需要修改窗口的标题栏样式(显示/隐藏),则需要使用平台相关的API(如Windows的SetWindowLong),这在Unity中可以使用DllImport调用系统API实现,但仅限于Windows平台。-多平台兼容性:上述调用WindowsAPI的方法只适用于Windows平台,对于Mac和Linux需要另外实现。###总结根据用户的需求,选择适合的方法:-固定分辨率:直接在PlayerSettings中设置。-运行时修改:使用代码在游戏启动时设置(可以结合保存的用户设置)。-启动时弹出设置窗口:自己实现一个分辨率选择界面,或者使用第三方插件/文件(如引用[2]的方法)。§§相关问题§§1.UnityPlayerSettings中如何设置窗口模式和全屏模式?2.在Unity中如何实现多平台的分辨率设置?3.如何保存用户设置的分辨率,并在下次启动时应用?</think> ### Unity设置窗口分辨率的方法总结 在Unity中设置发布项目的窗口分辨率,主要有以下几种方法: #### 1. **Player Settings 预设分辨率** - 在Unity编辑器中打开 **Project Settings > Player > Resolution and Presentation** - 关键设置项: - **Default Screen Width/Height**:设置默认分辨率 - **Fullscreen Mode**:选择 `Windowed` (窗口模式) - **Resizable Window**:勾选后允许用户拖拽调整窗口大小 - **Use DXGI Flip Model Swapchain**:提升窗口模式性能 - 优点:无需额外代码,直接打包生效 [^1] #### 2. **运行时动态修改分辨率** 通过脚本在运行时调整窗口(适用于Windows平台): ```csharp using System.Runtime.InteropServices; public class WindowResolver : MonoBehaviour { // 导入Windows API [DllImport("user32.dll")] private static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle); [DllImport("user32.dll")] private static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); const int GWL_STYLE = -16; const uint SWP_FRAMECHANGED = 0x0020; const uint SWP_NOMOVE = 0x0002; const uint SWP_NOSIZE = 0x0001; void Start() { // 设置窗口分辨率(1280x720)和位置(居中) SetWindowResolution(1280, 720); } void SetWindowResolution(int width, int height) { SetWindowPos( GetActiveWindow(), 0, (Screen.currentResolution.width - width) / 2, (Screen.currentResolution.height - height) / 2, width, height, SWP_FRAMECHANGED ); } private static IntPtr GetActiveWindow() { // 获取活动窗口句柄的实现 } } ``` > 需要配合WinAPI调用实现精确定位和尺寸控制 [^1][^3] #### 3. **启动配置法(Unity 2019+专用)** - 从引用[2]获取专用配置文件 - 将其放在与 **Assets同级目录** 的 `Plugin` 文件夹 - 打包后EXE会自动显示分辨率设置窗口 - 下载链接:`https://pan.baidu.com/s/1I0sjnLllbkti2b0K3ktnpw?pwd=ha9j` [^2] #### 4. **命令行启动参数** 发布后通过命令行指定分辨率: ``` YourGame.exe -screen-width 1920 -screen-height 1080 -screen-fullscreen 0 ``` ### 重要提示 1. Unity 2019+ 默认禁用了启动分辨率选择窗口,需使用方法2或3实现 2. 移动端(iOS/Android)分辨率由设备自动适配 3. 修改分辨率后调用 `Screen.SetResolution()` 生效渲染 4. Windows平台可配合 `SetWindowLong` 控制标题栏显示 [^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值