Unity实现退出应用程序的功能
效果:
鼠标悬浮右上角出关闭按钮,点击关闭按钮或按Esc键 调出提示框,点击确认退出。
功能实现
元素结构
- 创建 /UI/Canvas元素,设置
Sort Order
为999,保证其永远显示最上层,同时挂载ExitApplication.cs脚本,ExitApplication.cs在本文尾部2. 创建 /UI/Row Image 用于显示
关闭按钮图标,并调整为合适的大小。(Add Component 添加 Button 组件)同时给图片点击图标,用于控制提示框的显示。
- 新建一个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