MessageCenter.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /***
  2. *
  3. * Title: "SUIFW" UI框架项目
  4. * 主题: 消息中心
  5. * Description:
  6. * 功能: 负责本UI框架,以及整个项目的消息传递工作。
  7. * Date: 2017
  8. * Version: 0.1版本
  9. * Modify Recoder:
  10. *
  11. *
  12. */
  13. using UnityEngine;
  14. using UnityEngine.EventSystems;
  15. using System;
  16. using System.Collections.Generic;
  17. namespace SUIFW
  18. {
  19. public class MessageCenter
  20. {
  21. /// <summary>
  22. /// 委托:消息传递
  23. /// </summary>
  24. /// <param name="kv">消息类型与数值</param>
  25. public delegate void DelMessageDelivery(KeyValuesUpdate kv);
  26. //<所要监听的类型,监听到以后要执行的委托>
  27. public static Dictionary<string, DelMessageDelivery> dicMessages = new Dictionary<string, DelMessageDelivery>();
  28. /// <summary>
  29. /// 添加消息监听
  30. /// </summary>
  31. /// <param name="messageType">消息类型</param>
  32. /// <param name="handler">消息委托</param>
  33. public static void AddMsgListener(string messageType, DelMessageDelivery handler)
  34. {
  35. if (!dicMessages.ContainsKey(messageType))
  36. {
  37. dicMessages.Add(messageType, null);
  38. }
  39. dicMessages[messageType] += handler;
  40. }
  41. /// <summary>
  42. /// 取消指定消息监听
  43. /// </summary>
  44. /// <param name="messageType">消息类型</param>
  45. /// <param name="handler">消息委托</param>
  46. public static void RemoveMsgListener(string messageType, DelMessageDelivery handler)
  47. {
  48. if (dicMessages.ContainsKey(messageType))
  49. {
  50. dicMessages[messageType] -= handler;
  51. }
  52. }
  53. /// <summary>
  54. /// 取消所有的消息监听
  55. /// </summary>
  56. public static void RemoveAllMsgListener()
  57. {
  58. dicMessages.Clear();
  59. }
  60. /// <summary>
  61. /// 发送消息
  62. /// </summary>
  63. /// <param name="messageType"></param>
  64. /// <param name="kv"></param>
  65. public static void SendMessage(string messageType, KeyValuesUpdate kv)
  66. {
  67. DelMessageDelivery del;
  68. if (dicMessages.TryGetValue(messageType, out del))
  69. {
  70. if (del != null)
  71. {
  72. del(kv);
  73. }
  74. }
  75. }
  76. }//Class_end
  77. /// <summary>
  78. /// 键值更新
  79. /// 功能:配合委托,实现委托数据传递
  80. /// </summary>
  81. public class KeyValuesUpdate
  82. {
  83. //键
  84. private string _Key;
  85. //值
  86. private object _Values;
  87. /* 只读属性 */
  88. public string Key
  89. {
  90. get { return _Key; }
  91. }
  92. public object Values
  93. {
  94. get { return _Values; }
  95. }
  96. public KeyValuesUpdate(string key, object Values)
  97. {
  98. _Key = key;
  99. _Values = Values;
  100. }
  101. }//Class_end
  102. }