这期内容当中小编将会给大家带来有关使用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四、显示框的调用
此处调用可以自行设置一个按钮,在其点击事件中注册调用即可。
笔者使用项目中的方式进行演示。具体不做说明。调用方式已给出。
特别注意:由于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怎么自定义弹出框了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联成都网站设计公司行业资讯频道。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页题目:使用unity怎么自定义弹出框-创新互联
文章地址:http://www.jxjierui.cn/article/iices.html


咨询
建站咨询
