Unity实现退出应用程序的功能

Unity实现退出应用程序的功能

效果:

鼠标悬浮右上角出关闭按钮,点击关闭按钮或按Esc键 调出提示框,点击确认退出。

在这里插入图片描述

功能实现

元素结构
请添加图片描述

  1. 创建 /UI/Canvas元素,设置Sort Order 为999,保证其永远显示最上层,同时挂载ExitApplication.cs脚本,ExitApplication.cs在本文尾部 请添加图片描述2. 创建 /UI/Row Image 用于显示
    关闭按钮图标,并调整为合适的大小。(Add Component 添加 Button 组件)同时给图片点击图标,用于控制提示框的显示。
    在这里插入图片描述
  2. 新建一个Panel,用于提示框的背景
    • 新建三个 /UI/Text 元素,第一个用于提示内容
    • 取消按钮,添加 Button 组件同时给点击事件,用于控制提示框的隐藏。(同上,调用SetActive方法,取消勾选)
    • 确认按钮,调用 ExitApplication.cs 的exit方法

逻辑代码:

#if UNITY_STANDALONE // 只在windows、linux、mac客户端生效
using UnityEngine;
using UnityEngine.UI;

public class ExitApplication : MonoBehaviour
{
    public Button exitButton;

    private void Start()
    {
        RectTransform rectTransform = exitButton.GetComponent<RectTransform>();

        rectTransform.anchorMin = new Vector2(1f, 1f);
        rectTransform.anchorMax = new Vector2(1f, 1f);
        rectTransform.pivot = new Vector2(1f, 1f);
        rectTransform.anchoredPosition = new Vector2(-10, -10); // 在锚点的基础上向左和向下偏移 20 单位
        exitButton.gameObject.SetActive(false);
    }

    void Update()
    {
        Vector2 mousePosition = Input.mousePosition;
        if (mousePosition.x > Screen.width * 0.9f && mousePosition.y > Screen.height * 0.9f)
        {
            exitButton.gameObject.SetActive(true);
        }
        else
        {
            exitButton.gameObject.SetActive(false);
        }

        if (Input.GetKeyDown(KeyCode.Escape))
        {
            exitButton.onClick.Invoke();
        }
    }

    public void exit()
    {
#if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
#else
        Application.Quit();
#endif
    }
}
#endif

也可以使用unity自带的弹窗

    public void exit()
    {
        if (EditorUtility.DisplayDialog("退出", "确定要退出应用程序吗?", "是", "否"))
        {
#if UNITY_EDITOR
            UnityEditor.EditorApplication.isPlaying = false;
#else
        Application.Quit();
#endif
        }
    }

在这里插入图片描述

可在项目中导入使用:
通过百度网盘分享的文件:ExitApplication.unitypackage
链接:https://pan.baidu.com/s/1RBGmol0KsLYOA9TrM-Ql1g?pwd=mrne
提取码:mrne

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值