using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace GeneralTools { /// /// 3.10更新 GUI改成UGUI CANVAS预设 /// public class MessageBox : SingletonBaseAttribute { protected SetMessageShow messageShow; protected SetNoticeShow noticeShow; protected SetProgressBarShow progressBarShow; static List messageShowList = new List(); public override void IAwake() { base.IAwake(); if(messageShow==null) { messageShow = UtilityTool.FindChild(transform, "MessageShowCanvas"); messageShow.Hide(); } if (noticeShow == null) { noticeShow = UtilityTool.FindChild(transform, "NoticeShow"); noticeShow.Hide(); } if (progressBarShow == null) { progressBarShow = UtilityTool.FindChild(transform, "ProgressBarShow"); progressBarShow.Hide(); } } public void Show(string tittleStr, string messageStr, string buttonStr, Action action, string messageName = "通用") { AddMessageToList(tittleStr, messageStr, buttonStr, action, messageName); } public void Show(string messageStr, string buttonStr, Action action, string messageName = "通用") { AddMessageToList("提示", messageStr, buttonStr, action, messageName); } public void Show(string messageStr, Action action, string messageName = "通用") { AddMessageToList("提示", messageStr, "确认", action, messageName); } public void Show(string tittleStr, string messageStr, string messageName = "通用") { AddMessageToList(tittleStr, messageStr, "确认", Hide, messageName); } public void Show(string messageStr) { AddMessageToList("提示", messageStr, "确认", Hide, "通用"); } public void Hide() { int removeIndex = messageShowList.Count - 1; if (removeIndex >= 0) messageShowList.RemoveAt(removeIndex); int maxIndex = messageShowList.Count - 1; if (maxIndex < 0) { messageShow.Hide(); } else { MessageShowClass m = messageShowList[maxIndex]; messageShow.Show(m, Hide); } } public void Hide(string messageName) { messageShowList.RemoveAll(m => m.messageName == messageName); int maxIndex = messageShowList.Count - 1; if (maxIndex < 0) { messageShow.Hide(); } else { MessageShowClass m = messageShowList[maxIndex]; messageShow.Show(m, Hide); } } public void ShowNotice(string tittleStr, string messageStr) { noticeShow.Show(tittleStr, messageStr); } public void HideNotice() { noticeShow.Hide(); } public void ShowProgressBar(string tittleStr, string numStr, float progress) { progressBarShow.Show(tittleStr, numStr, progress); } public void HideProgressBar() { progressBarShow.Hide(); } private void AddMessageToList(string tittleStr, string messageStr, string buttonStr, Action action, string messageName) { MessageShowClass newMessage = new MessageShowClass(tittleStr, messageStr, buttonStr, action, messageName); messageShowList.Add(newMessage); messageShow.Show(newMessage, Hide); } } public class MessageShowClass { public string tittleStr; public string messageStr; public string buttonStr; public Action action; public string messageName; public MessageShowClass() { } public MessageShowClass(string _tittleStr, string _messageStr, string _buttonStr, Action _action, string _messageName) { tittleStr = _tittleStr; messageStr = _messageStr; buttonStr = _buttonStr; action = _action; messageName = _messageName; } } }