这期内容当中小编将会给大家带来有关使用unity怎么自定义弹出框,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
10年积累的成都做网站、成都网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有洪雅免费网站建设让你可以放心的选择与我们合作。
一、弹出框的搭建
布局如图: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
四、显示框的调用
此处调用可以自行设置一个按钮,在其点击事件中注册调用即可。
笔者使用项目中的方式进行演示。具体不做说明。调用方式已给出。
特别注意:由于UiMessage调用了MessageBox的方法,所以必须先初始化MessageBox的数据。使用什么就初始化什么。笔者使用了ok、cancel按钮(默认不初始化模式,即为模态框,不初始化DialogResult即为只显示ok按钮),所以注册了相应的点击事件(委托)。最后显示弹出框(整个包含遮罩和弹出框)。
五、运行结果
六、弹出框可拖拽移动
将DragManage添加到MessageBox物体上面。(如果你想让ui物体可拖拽,对其添加DragManage即可实现)
笔者就不做演示了
using UnityEngine; using UnityEngine.EventSystems; ////// 只是用来处理拖拽 /// public class DragManage : MonoBehaviour, IDragHandler, IBeginDragHandler, IEndDragHandler { private Vector3 offect; public void OnBeginDrag(PointerEventData eventData) { offect = Input.mousePosition - transform.position; } public void OnDrag(PointerEventData eventData) { transform.position = Input.mousePosition - offect; } public void OnEndDrag(PointerEventData eventData) { transform.position = Input.mousePosition - offect; } }
上述就是小编为大家分享的使用unity怎么自定义弹出框了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。