Unity3D

您所在的位置:网站首页 怎么强制窗口全屏模式切换 Unity3D

Unity3D

2024-03-15 09:30| 来源: 网络整理| 查看: 265

前言

在发布程序之后,根据游戏的需要,通常会有全屏和窗口化的切换功能。比如某些游戏设置里面,就会有全屏运行,给玩家更沉浸的体验,特别是3D游戏,如果带有一个窗口游玩,就会感觉是在玩游戏,而不是那种身临其境,那么这里就简单的介绍一下Unity3D里面应该怎么实现全屏和窗口的切换。

方法

官方提供了屏幕管理的API,UnityEngine.CoreModule.Screen这个类,它提供了获取屏幕的宽、高、DPI等等信息,所以使用Screen.fullScreen= true or false即可设置窗口的全屏或窗口化,是不是感觉非常简单,实际也是如此。有一点值得注意的是,Screen.fullScreenMode,这个枚举包含了4个情况,下面一一列举下:

ExclusiveFullScreen - Win平台专用,会将系统分辨率调整到应用的分辨率,举个例子:cs1.6每次打开都会屏幕闪一下,然后分辨率降低适配游戏的分辨率 FullScreenWindow - 适用于全平台,如果Win设置了MacOS的枚举,会降级到这个设置。 MaximizedWindow - MacOS专用,全屏且会隐藏底部Dock Windowed - 桌面端专用,设置为窗口化 后记

其实实现起来非常简单,简简单单两句话就可以搞定,这里再补充个窗口相关的内容,比如你想让窗口不能最大化,也就是禁用最大化操作。有两种方式,第一种就是在PlayerSettings里面设置好分辨率,然后取消勾选Resizable Window,第二种则是使用User32.dll,代码如下:

public [DllImport("user32.dll")] private static extern IntPtr GetActiveWindow(); [DllImport("user32.dll")] private static extern int GetWindowLong(IntPtr hWnd, int nIndex); [DllImport("user32.dll")] private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); private const int GWL_STYLE = -16; private const int WS_MAXIMIZEBOX = 0x10000; public void DisableMaximum() { var hwnd = GetActiveWindow(); var value = GetWindowLong(hwnd, GWL_STYLE); SetWindowLong(hwnd, GWL_STYLE, (int)(value & ~WS_MAXIMIZEBOX)); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3