Skip to content

Commit 5e5d472

Browse files
committed
add event queue exmaple3
add event queue exmaple3
1 parent 5980b9f commit 5e5d472

File tree

6 files changed

+226
-1
lines changed

6 files changed

+226
-1
lines changed

Assets/Game Programming Patterns/Event Queue Pattern/Example2/EventQueuePatternExample2.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void Update()
4646
Message sMessage = new Message();
4747
sMessage.Type = "START";
4848
sMessage.Data = "你好~~~我是一条延迟发送的消息";
49-
//延迟5秒后才发送
49+
//延迟1秒后才发送
5050
sMessage.Delay = 1f;
5151
//MessageDispatcher发送一条信息出去,信息的标识为"START"。
5252
MessageDispatcher.SendMessage(sMessage);

Assets/Game Programming Patterns/Event Queue Pattern/Example3.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
//-------------------------------------------------------------------------------------
2+
// EventQueuePatternExample3.cs
3+
//-------------------------------------------------------------------------------------
4+
5+
using UnityEngine;
6+
using System.Collections;
7+
using System;
8+
9+
namespace EventQueuePatternExample3
10+
{
11+
12+
13+
public class EventQueuePatternExample3 : MonoBehaviour
14+
{
15+
Receiver receiver = new Receiver();
16+
void Start()
17+
{
18+
receiver.RegisterDelegates();
19+
20+
EventManger.Instance.SendEvent(EventType.UIEvent, (int)UIEventEnum.Start_Game, 1);
21+
}
22+
23+
void Update()
24+
{
25+
26+
}
27+
28+
}
29+
30+
public class Receiver
31+
{
32+
public void RegisterDelegates()
33+
{
34+
EventManger.Instance.RegisterEventHandler(EventHandlerType.UI, ProcessEvent);
35+
}
36+
37+
38+
private void ProcessEvent(BaseEventMsg msg)
39+
{
40+
if (msg != null && msg.Params.Length > 0)
41+
{
42+
int data = (int)msg.Params[0];
43+
Debug.Log("recieve! data=" + data.ToString());
44+
}
45+
46+
}
47+
}
48+
49+
public enum EventHandlerType
50+
{
51+
//传递UI消息
52+
UI = 0,
53+
Render,
54+
}
55+
56+
public enum EventType
57+
{
58+
None = -1,
59+
UIEvent = 1,
60+
RnederEvent = 2,
61+
}
62+
63+
64+
public enum UIEventEnum
65+
{
66+
None = -1,
67+
Start_Game = 1,
68+
}
69+
70+
71+
public class BaseEventMsg
72+
{
73+
public uint CommandID;
74+
public EventType MsgType;
75+
public int Sequence;
76+
public object[] Params = null;
77+
78+
public BaseEventMsg()
79+
{
80+
81+
}
82+
83+
public BaseEventMsg(uint inCommandID, EventType inMsgType, params object[] InParams)
84+
{
85+
CommandID = inCommandID;
86+
MsgType = inMsgType;
87+
//SimpleParam = para1;
88+
Params = InParams;
89+
}
90+
91+
public void SetEventMsg(uint inCommandID, EventType inMsgType, params object[] InParams)
92+
{
93+
CommandID = inCommandID;
94+
MsgType = inMsgType;
95+
//SimpleParam = SimpleGenericParam.NullParam;
96+
Params = InParams;
97+
}
98+
99+
public BaseEventMsg(uint inCommandID, EventType inMsgType)
100+
{
101+
CommandID = inCommandID;
102+
MsgType = inMsgType;
103+
}
104+
}
105+
106+
107+
public class EventManger
108+
{
109+
private static EventManger _Instance;
110+
public static EventManger Instance
111+
{
112+
get
113+
{
114+
if (_Instance == null)
115+
{
116+
_Instance = new EventManger();
117+
}
118+
return _Instance;
119+
}
120+
}
121+
122+
public delegate void EventHandler(BaseEventMsg Msg);
123+
124+
125+
/// <summary>
126+
/// 注册事件的处理Handler
127+
/// </summary>
128+
/// <param name="InType"></param>
129+
/// <param name="eventHandler"></param>
130+
public void RegisterEventHandler(EventHandlerType InType, EventHandler eventHandler)
131+
{
132+
if (InType == EventHandlerType.UI)
133+
{
134+
m_UIEventHandler = eventHandler;
135+
}
136+
else if (InType == EventHandlerType.Render)
137+
{
138+
m_NetWorkEventHandler = eventHandler;
139+
}
140+
141+
}
142+
143+
/// <summary>
144+
/// 反注册事件的处理Handler
145+
/// </summary>
146+
public void UnRegisterEventHandler(EventHandlerType InType)
147+
{
148+
// EventHandlers[(int)InType] = null;
149+
150+
if (InType == EventHandlerType.UI)
151+
{
152+
m_UIEventHandler = null;
153+
}
154+
else if (InType == EventHandlerType.Render)
155+
{
156+
m_NetWorkEventHandler = null;
157+
}
158+
159+
}
160+
private EventHandler m_UIEventHandler = null;
161+
private EventHandler m_NetWorkEventHandler = null;
162+
163+
164+
/// <summary>
165+
/// 发送事件
166+
/// </summary>
167+
public void SendEvent(EventType Handles, BaseEventMsg Msg, bool IsProtocolEvent = false)
168+
{
169+
if (Handles == EventType.UIEvent)
170+
{
171+
if (m_UIEventHandler != null)
172+
{
173+
m_UIEventHandler(Msg);
174+
}
175+
}
176+
else if (Handles == EventType.RnederEvent)
177+
{
178+
if (m_NetWorkEventHandler != null)
179+
{
180+
m_NetWorkEventHandler(Msg);
181+
}
182+
}
183+
}
184+
185+
public void SendEvent(EventType HandleType, uint CommandID, params object[] inParams)
186+
{
187+
BaseEventMsg Msg = new BaseEventMsg();
188+
if (Msg != null)
189+
{
190+
Msg.SetEventMsg(CommandID, HandleType, inParams);
191+
SendEvent(HandleType, Msg);
192+
}
193+
}
194+
}
195+
196+
}

Assets/Game Programming Patterns/Event Queue Pattern/Example3/EventQueuePatternExample3.cs.meta

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Binary file not shown.

Assets/Game Programming Patterns/Event Queue Pattern/Example3/EventQueuePatternExample3.unity.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)