说实话,这样做不是很厚道,不过,技术上是可以实现的。
本文实现的效果如下:
在这里插入图片描述

二、创建脚本

创建一个 WindowsStyle 脚本,挂到场景的某个物体上,比如我挂到 Main Camera 上。
在这里插入图片描述

using System;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.UI;
public class WindowsStyle : MonoBehaviour
    public Button hideBarBtn;
    public Button showBarBtn;
    public Button hideCloseBtn;
    public Button showCloseBtn;
    private void Awake()
        // 获得窗口句柄
        var hwd = GetForegroundWindow();
        // 隐藏标题栏
        hideBarBtn.onClick.AddListener(() =>
            var wl = GetWindowLong(hwd, GWL_STYLE);
            wl &= ~WS_CAPTION;
            SetWindowLong(hwd, GWL_STYLE, wl);
        });
        // 显示标题栏
        showBarBtn.onClick.AddListener(() =>
            var wl = GetWindowLong(hwd, GWL_STYLE);
            wl |= WS_CAPTION;
            SetWindowLong(hwd, GWL_STYLE, wl);
        });
        // 隐藏关闭按钮
        hideCloseBtn.onClick.AddListener(() =>
            var wl = GetWindowLong(hwd, GWL_STYLE);
            wl &= ~WS_SYSMENU;
            SetWindowLong(hwd, GWL_STYLE, wl);
        });
        // 显示关闭按钮
        showCloseBtn.onClick.AddListener(() =>
            var wl = GetWindowLong(hwd, GWL_STYLE);
            wl |= WS_SYSMENU;
            SetWindowLong(hwd, GWL_STYLE, wl);
        });
    /// <summary>
    /// 点击窗口的x按钮,会执行这个函数
    /// </summary>
    private void OnApplicationQuit()
        Application.wantsToQuit += () =>
            // 获得窗口句柄
            var hwd = GetForegroundWindow();
            // 设置窗口最小化
            ShowWindow(hwd, SW_SHOWMINIMIZED);
            // 阻止程序被关闭
            return false;
    [DllImport("user32.dll")]
    public static extern IntPtr GetForegroundWindow();
    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hwd, int cmdShow);
    [DllImport("user32.dll")]
    public static extern long GetWindowLong(IntPtr hwd, int nIndex);
    [DllImport("user32.dll")]
    public static extern void SetWindowLong(IntPtr hwd, int nIndex, long dwNewLong);
    /// <summary>
    /// 最小化
    /// </summary>
    const int SW_SHOWMINIMIZED = 2;
    /// <summary>
    /// 最大化
    /// </summary>
    const int SW_SHOWMAXIMIZED = 3;
    /// <summary>
    /// 还原
    /// </summary>
    const int SW_SHOWRESTORE = 1;
    /// <summary>
    /// 窗口风格
    /// </summary>
    const int GWL_STYLE = -16;
    /// <summary>
    /// 标题栏
    /// </summary>
    const int WS_CAPTION = 0x00c00000;
    /// <summary>
    /// 标题栏按钮
    /// </summary>
    const int WS_SYSMENU = 0x00080000;

四、赋值脚本的按钮成员

使用UGUI创建四个按钮,赋值给脚本的按钮成员对象。
在这里插入图片描述

五、打包运行测试

发布PC平台的exe
在这里插入图片描述
发布成功后,运行测试效果如下:
在这里插入图片描述

文章目录一、前言二、创建脚本三、代码四、赋值脚本的按钮成员五、打包运行测试一、前言游戏项目是使用Unity开发的,发布了PC平台的exe。然后策划提出这么一个需求:可否让玩家点击窗口的关闭按钮的时候不关闭程序,而是执行最小化。说实话,这样做不是很厚道,不过,技术上是可以实现的。二、创建脚本创建一个WindowsStyle脚本,挂到场景的某个物体上,比如我挂到Main Camera上。三、代码using System;using System.Runtime.InteropServic public class ToolControlTaskBar [DllImport("user32.dll")] //这里是引入 user32.dll 库, 这个库是windows系统自带的。 pub... 一怒之下,直接用Unity自己写个小插件实现这个小功能。 经测试,可实现根据某个窗口名称隐藏窗口,但不适用窗口名称带中文的。可根据系统进程名称最小化窗口。 代码如下: using System; using System.Collections; using System.Collections.Generic; using System.Run Unity发布exe记录: unity的OnDestroy() 与OnApplicationQuit()比较 在正常关闭窗口时,ondestroy可以响应,alt+f4或任务管理器结束任务时,onapplicationquit可以响应。 结束应用时 执行结束事件 直接杀死进程会导致 on事件不执行 通过窗口关闭可以正常执行 使用windows API关闭应用 强制杀死进程 即(unity的onapplicationquit不会执行) [DllImport 最近发布UnityWindows平台exe版本,需要监听窗口关闭事件,做一些逻辑,比如第一次点关闭的时候弹出提示,禁止exe关闭,第二次才关闭。 二、具体实现 1、Unity5.x版本 using UnityEngine; public class Main : MonoBehaviour void OnApplicationQuit() ++m_quitCnt; if(m_quitCnt < 2)
UniWinApi示例项目 新リポジトリもご覧ください。こちらは苹果でも的Windowsでも动作します。 另请参阅我的新存储库 。 它适用于Mac和Windows。 はUnityでは本来行えない操作をWindows API経由で行うものです。以下のようなことができます。 ウィンドウの移动 ウィンドウサイズ変更 最大化ンドウの最大化最小化 ウィンドウの透过(枠なしで,四角形でないウィンドウにします) ファイルのドロップを受け付ける Windowsのダイアログでファイルを开く(试験実装で単一ファイルのみ) マウスポインタを移动させる マウスのboタン操作を送出する 主にデスクトップマスコットト
C#本科毕业设计基于unity的可视化需求工程平台源代码。已获通过的高分项目。 C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码。C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码C#本科毕业设计基于unity的可视化需求工程平台源代码
#region 窗口放大缩小 public int winPosX; //窗口左上角x public int winPosY; //窗口左上角y public int minWidth, maxWidth; //窗口宽度 public int minHeight, maxHeight; //窗口高度
网上很多人在没有测试的情况的下瞎掰,真的是耽误别人时间。 这篇的前景是Unity在安卓端、ios、PC分别使用Sqlite数据库存储数据(这里我用来实现游戏的暂存):寒假找了个线上实习,有一个功能就是要游戏暂存,这是个消除游戏,没必要每一步都去操作数据库,我们只需要在用户退出时记录即可,并且我们需要根据退出的时机决定某些流程(因为这个游戏还有引导界面,游戏局数的控制),用户退出有几种情况: 1.用户直接后台杀死应用 2.用户通过退出(Application.Quit)退出 3.应用被非用户原因强制退出
前段时间做Windows程序,由一个H5开发的书架调起Unity开发的场景漫游,这之间需要进行窗口的全屏显示和最小化。这里使用引入User32.dll的方法,再调用ShowWindow方法控制程序窗口大小。方法如下: [DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hwnd, int n...
public class WindowAPI : MonoBehaviour [DllImport("user32.dll", EntryPoint = "FindWindow")] private static extern IntPtr F.
//最大化窗口 Screen.SetResolution(Screen.currentResolution.width, Screen.currentResolution.height, true); //最小化窗口 Screen.SetResolution(1, 1, false); 希望能对您有所帮助。