跳转到主内容
极星编程网:以代码为星,赴技术山海!

unity自定义弹出框功能

本文实例为大家分享了unity自定义弹出框的具体方法,供大家参考,具体内容如下

一、弹出框的搭建

布局如图:Message为整个父物体,并且添加UiMessage代码。panel为遮罩。

MessageBox为整个提示框,Panel为标题,ok为确定按钮,cancel为取消按钮,retry为重试按钮,Text为提示框的文字。

注意大小写,后面代码会根据名称进行获取对应组建。

效果如下:

二、MessageBox代码

要说明的都在代码中注释了。仿照Windows的提示框功能,如果功能不足可自行添加。例如关闭按钮、显示图标等。

using System;

public enum DialogResult{Ok,OKCancel,RetryCancel,YesNo,YesNoCancel}

public static class MessageBox{///

/// true表示模态框/// public static bool type;//三个委托,分别为三个按钮的点击运行事件public static Action clickOk;public static Action clickRetry;public static Action clickCancel;public static DialogResult dialogResult;//标题public static string headText;//文本public static string text;//状态。用于显示或隐藏弹出框public static bool state;

///

///重试按钮点击事件/// public static void onClickRetry(){state = false;clickRetry?.Invoke();clickRetry = null;}/// /// 取消按钮点击事件/// public static void onClickCancel(){state = false;clickCancel?.Invoke();clickCancel = null;}/// /// 确定按钮点击事件/// public static void onClickOk(){state = false;clickOk?.Invoke();clickOk = null;}

///

/// 显示/// /// 内容/// 标题/// 样式/// 模式public static void Show(string _text,string _head,DialogResult _dialog, bool _type = true){text = _text;headText = _head;dialogResult = _dialog;type = _type;state = true;}public static void Show(string _text,string _head,bool _type = true){text = _text;headText = _head;dialogResult = DialogResult.Ok;type = _type;state = true;}public static void Show(string _text, bool _type = true){text = _text;headText = "信息";dialogResult = DialogResult.Ok;type = _type;state = true;}

}

三、UiMessage代码

添加到Message物体上。用于控制弹出框的显示等功能。

using UnityEngine;using UnityEngine.UI;

public class UiMessage : MonoBehaviour{public Button ok;public Button cancel;public Button retry;///

/// 遮罩/// public GameObject panel;public Text headText;public Text text;/// /// 弹出框/// private GameObject messageBox;

private void Awake(){messageBox = gameObject.transform.GetChild(1).gameObject;ok = messageBox.transform.Find("ok").GetComponent

相关文章