跳至内容
九溪
溪水润知林,滴露启慧心
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您在这里:
Home
»
知识标签
»
Unity
»
去除窗体模式下的边框并设置全屏
您的足迹:
wiki:unity:unity-remove-window-border
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 去除窗体模式下的边框并设置全屏 ====== 方法一: 此段代码主要的功能就是可以精确方便的设定发布后的Unity3D文件执行时在显示屏幕上的坐标和大小,且可以以无边框非全屏的模式显示。注意:要把此代码文件命名为WindowMod.cs。C#代码如下: <code csharp WindowMod.cs> using System; using System.Collections; using System.Runtime.InteropServices; using System.Diagnostics; using UnityEngine; public class WindowMod: MonoBehaviour { public Rect screenPosition; [DllImport("user32.dll")] static extern IntPtr SetWindowLong (IntPtr hwnd,int _nIndex ,int dwNewLong); [DllImport("user32.dll")] static extern bool SetWindowPos (IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); [DllImport("user32.dll")] static extern IntPtr GetForegroundWindow (); // not used rigth now //const uint SWP_NOMOVE = 0x2; //const uint SWP_NOSIZE = 1; //const uint SWP_NOZORDER = 0x4; //const uint SWP_HIDEWINDOW = 0x0080; const uint SWP_SHOWWINDOW = 0x0040; const int GWL_STYLE = -16; const int WS_BORDER = 1; void Start () { SetWindowLong(GetForegroundWindow (), GWL_STYLE, WS_BORDER); bool result = SetWindowPos (GetForegroundWindow (), 0, (int)screenPosition.x,(int)screenPosition.y, (int)screenPosition.width,(int) screenPosition.height, SWP_SHOWWINDOW); } } </code> 方法二: <code csharp WindowResolution.cs> using UnityEngine; using System.Collections; using System.Runtime.InteropServices; using System; public class WindowResolution : MonoBehaviour { /// <summary> /// 窗口宽度 /// </summary> public int winWidth; /// <summary> /// 窗口高度 /// </summary> public int winHeight; /// <summary> /// 窗口左上角x /// </summary> public int winPosX; /// <summary> /// 窗口左上角y /// </summary> public int winPosY; [DllImport("user32.dll")] static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong); [DllImport("user32.dll")] static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); [DllImport("user32.dll")] static extern IntPtr GetForegroundWindow(); [DllImport("User32.dll", EntryPoint = "GetSystemMetrics")] public static extern IntPtr GetSystemMetrics(int nIndex); const int SM_CXSCREEN = 0x00000000; const int SM_CYSCREEN = 0x00000001; const uint SWP_SHOWWINDOW = 0x0040; const int GWL_STYLE = -16; const int WS_BORDER = 1; const int WS_POPUP = 0x800000; public GUIText t; // Use this for initialization void Start() { winWidth = 610; winHeight = 350; //当前屏幕分辨率 int resWidth = (int)GetSystemMetrics(SM_CXSCREEN); int resHeight = (int)GetSystemMetrics(SM_CYSCREEN); winPosX = resWidth / 2 - winWidth / 2; winPosY = resHeight / 2 - winHeight / 2 -1; SetWindowLong(GetForegroundWindow(), GWL_STYLE, WS_POPUP); //测试发现左下角坐标为(0,1),修改如下 bool result = SetWindowPos(GetForegroundWindow(), 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW); //bool result = SetWindowPos(GetForegroundWindow(), 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW); } void OnGUI() { if (Input.GetMouseButtonDown(0)) { t.text = "X:"+Input.mousePosition.x + " Y:" + Input.mousePosition.y; } } } </code>
wiki/unity/unity-remove-window-border.txt
· 最后更改: 2023/01/03 15:25 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部