unity自定义弹出框功能
本文实例为大家分享了unity自定义弹出框的具体方法,供大家参考,具体内容如下
一、弹出框的搭建
布局如图:Message为整个父物体,并且添加UiMessage代码。panel为遮罩。
MessageBox为整个提示框,Panel为标题,ok为确定按钮,cancel为取消按钮,retry为重试按钮,Text为提示框的文字。
注意大小写,后面代码会根据名称进行获取对应组建。
效果如下:
二、MessageBox代码
要说明的都在代码中注释了。仿照Windows的提示框功能,如果功能不足可自行添加。例如关闭按钮、显示图标等。
usingSystem; publicenumDialogResult { Ok, OKCancel, RetryCancel, YesNo, YesNoCancel } publicstaticclassMessageBox { //////true表示模态框 /// publicstaticbooltype; //三个委托,分别为三个按钮的点击运行事件 publicstaticActionclickOk; publicstaticActionclickRetry; publicstaticActionclickCancel; publicstaticDialogResultdialogResult; //标题 publicstaticstringheadText; //文本 publicstaticstringtext; //状态。用于显示或隐藏弹出框 publicstaticboolstate; //////重试按钮点击事件 /// publicstaticvoidonClickRetry() { state=false; clickRetry?.Invoke(); clickRetry=null; } //////取消按钮点击事件 /// publicstaticvoidonClickCancel() { state=false; clickCancel?.Invoke(); clickCancel=null; } //////确定按钮点击事件 /// publicstaticvoidonClickOk() { state=false; clickOk?.Invoke(); clickOk=null; } //////显示 /// ///内容 /// 标题 /// 样式 /// 模式 publicstaticvoidShow(string_text,string_head,DialogResult_dialog,bool_type=true) { text=_text; headText=_head; dialogResult=_dialog; type=_type; state=true; } publicstaticvoidShow(string_text,string_head,bool_type=true) { text=_text; headText=_head; dialogResult=DialogResult.Ok; type=_type; state=true; } publicstaticvoidShow(string_text,bool_type=true) { text=_text; headText="信息"; dialogResult=DialogResult.Ok; type=_type; state=true; } }
三、UiMessage代码
添加到Message物体上。用于控制弹出框的显示等功能。
usingUnityEngine; usingUnityEngine.UI; publicclassUiMessage:MonoBehaviour { publicButtonok; publicButtoncancel; publicButtonretry; //////遮罩 /// publicGameObjectpanel; publicTextheadText; publicTexttext; //////弹出框 /// privateGameObjectmessageBox; privatevoidAwake() { messageBox=gameObject.transform.GetChild(1).gameObject; ok=messageBox.transform.Find("ok").GetComponent
四、显示框的调用
此处调用可以自行设置一个按钮,在其点击事件中注册调用即可。
笔者使用项目中的方式进行演示。具体不做说明。调用方式已给出。
特别注意:由于UiMessage调用了MessageBox的方法,所以必须先初始化MessageBox的数据。使用什么就初始化什么。笔者使用了ok、cancel按钮(默认不初始化模式,即为模态框,不初始化DialogResult即为只显示ok按钮),所以注册了相应的点击事件(委托)。最后显示弹出框(整个包含遮罩和弹出框)。
五、运行结果
六、弹出框可拖拽移动
将DragManage添加到MessageBox物体上面。(如果你想让ui物体可拖拽,对其添加DragManage即可实现)
笔者就不做演示了
usingUnityEngine; usingUnityEngine.EventSystems; //////只是用来处理拖拽 /// publicclassDragManage:MonoBehaviour,IDragHandler,IBeginDragHandler,IEndDragHandler { privateVector3offect; publicvoidOnBeginDrag(PointerEventDataeventData) { offect=Input.mousePosition-transform.position; } publicvoidOnDrag(PointerEventDataeventData) { transform.position=Input.mousePosition-offect; } publicvoidOnEndDrag(PointerEventDataeventData) { transform.position=Input.mousePosition-offect; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。