歡迎加入Unity業內qq交流羣:956187480
qq掃描二維碼加羣
1.編寫接口
public interface IMessageHandler {
void HandleMessage(Messages messages);
}
2.實現接口
public class MessageHandler : MonoBehaviour, IMessageHandler
{
protected void Awake()
{
MessageDispatcher.Attach(this);
}
public virtual void HandleMessage(Messages messages)
{
}
protected void OnDestroy()
{
MessageDispatcher.Detach(this);
}
}
3.定義消息結構
public class Messages{
public string Type { get; private set; }
public object Data { get; private set; }
public Messages()
{
}
public Messages(string type,object data) {
this.Type = type;
this.Data = data;
}
}
4.註冊並分發消息
public class MessageDispatcher{
private static List<IMessageHandler> messageHandlers = new List<IMessageHandler>();
/// 註冊消息
public static void Attach(IMessageHandler messageHandler)
{
if (messageHandlers.IndexOf(messageHandler) == -1)
{
messageHandlers.Add(messageHandler);
}
}
/// 消息事件分發
public static void Dispatch(string type,object data = null)
{
Messages msg = new Messages(type, data);
for (int i = 0; i < messageHandlers.Count; i++)
{
messageHandlers[i].HandleMessage(msg);
}
}
/// 移除註冊的消息
public static void Detach(IMessageHandler handler)
{
if (messageHandlers != null)
{
messageHandlers.Remove(handler);
}
}
5.消息類型
public const string ShowMainView = "Show_Main_View";
public const string HideMainView = "Hide_Main_View";
public const string ShowLoginView = "Show_Login_View";
public const string HideLoginView = "Hide_Login_View";
6.監聽消息
public override void HandleMessage(IMessages messages)
{
base.HandleMessage(messages);
switch(messages.Type)
{
case MessagesType.ShowErrorView:
case MessagesType.HideErrorView:
default:
break;
}
}
歡迎加入Unity業內qq交流羣:956187480
qq掃描二維碼加羣