Unity打包窗口化放大、缩小、拖拽功能、无边框设置 C#

编程入门 行业动态 更新时间:2024-10-08 13:34:20

Unity打包窗口化放大、缩小、拖拽功能、无<a href=https://www.elefans.com/category/jswz/34/1766074.html style=边框设置 C#"/>

Unity打包窗口化放大、缩小、拖拽功能、无边框设置 C#

Unity打包Windows窗口实现放大、缩小、拖拽、无边框


文章目录

  • Unity打包Windows窗口实现放大、缩小、拖拽、无边框
  • 前言
  • 一、引入 user32.dll
  • 二、使用步骤
    • 1.引入库
    • 2.功能封装
    • 3.效果图如下,绑定自定义按钮
  • 总结


前言

Unity无边框设置、窗口化放大、缩小、拖拽
提示:PC端打包,测试尽量在打包后测试。
编辑器下测试会有意想不到的后果呦~~


一、引入 user32.dll

[DllImport("user32.dll")]

二、使用步骤

1.引入库

代码如下:

        [DllImport("user32.dll")]private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);[DllImport("user32.dll")]private static extern IntPtr GetForegroundWindow();[DllImport("user32.dll")]private static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);[DllImport("user32.dll")]private static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy,uint uFlags);[DllImport("user32.dll")]private static extern bool ReleaseCapture();[DllImport("user32.dll")]private static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);

2.功能封装

代码如下:注释详细,不懂就问哈

 public class WindowSetting : MonoBehaviour{[DllImport("user32.dll")]private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);[DllImport("user32.dll")]private static extern IntPtr GetForegroundWindow();[DllImport("user32.dll")]private static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);[DllImport("user32.dll")]private static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy,uint uFlags);[DllImport("user32.dll")]private static extern bool ReleaseCapture();[DllImport("user32.dll")]private static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);const int SW_SHOWMINIMIZED = 2; //{最小化, 激活}const int SW_SHOWMAXIMIZED = 3; //最大化const int SW_SHOWRESTORE = 1; //还原const uint SWP_SHOWWINDOW = 0x0040;const int GWL_STYLE = -16;const int WS_POPUP = 0x800000;private Rect _screenPosition;private IntPtr _handle;/// <summary>/// 放大全屏按钮  缩小按钮  还原窗口按钮  退出按钮/// </summary>public Button bigBtn, smallBtn, restoreBtn, closeBtn;/// <summary>/// 自定义屏幕分辨率 长高/// </summary>private int _screenWidth, _screenHeight;private void Start(){bigBtn.onClick.AddListener(OnClickMaximize);smallBtn.onClick.AddListener(OnClickMinimize);restoreBtn.onClick.AddListener(OnClickRestore);closeBtn.onClick.AddListener(CloseWindow);//自定义窗口分辨率_screenWidth = 1280;_screenHeight = 720;#if UNITY_STANDALONE_WIN && !UNITY_EDITOR //作用是编辑器模式下不运行 尽量打包运行测试Resolution[] r = Screen.resolutions;_screenPosition =new Rect((r[r.Length - 1].width - Screen.width) / 2, (r[r.Length - 1].height - Screen.height) / 2, _screenWidth, _screenHeight);SetWindowLong(GetForegroundWindow(), GWL_STYLE, WS_POPUP);//将网上的WS_BORDER替换成WS_POPUP  _handle = GetForegroundWindow();   //FindWindow ((string)null, "popu_windows");SetWindowPos(GetForegroundWindow(), 0, (int)_screenPosition.x, (int)_screenPosition.y, (int)_screenPosition.width, (int)_screenPosition.height, SWP_SHOWWINDOW);
#endif}/// <summary>/// 最小化 隐藏/// </summary>private static void OnClickMinimize(){ShowWindow(GetForegroundWindow(), SW_SHOWMINIMIZED);}/// <summary>/// 最大化 全屏/// </summary>private static void OnClickMaximize(){ShowWindow(GetForegroundWindow(), SW_SHOWMAXIMIZED);}/// <summary>/// 还原窗口/// </summary>private static void OnClickRestore(){ShowWindow(GetForegroundWindow(), SW_SHOWRESTORE);}/// <summary>/// 退出/// </summary>private void CloseWindow(){Application.Quit();}/// <summary>/// 窗口拖拽区域  此处调用可以在按钮上添加EventTrigger组件 使用Drag方法/// </summary>public void DragWindowsMethod(){ReleaseCapture();SendMessage(_handle, 0xA1, 0x02, 0);SendMessage(_handle, 0x0202, 0, 0);}}

3.效果图如下,绑定自定义按钮

总结

代码整体已贴出,功能亲测可用,欢迎学习交流。点赞+收藏+关注哦~

更多推荐

Unity打包窗口化放大、缩小、拖拽功能、无边框设置 C#

本文发布于:2024-03-06 21:07:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1716376.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:边框   拖拽   功能   窗口化   Unity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!