Skip to content
This repository was archived by the owner on Jul 11, 2023. It is now read-only.

Commit 23e2225

Browse files
committed
支持多个消息处理的存在
1 parent f653553 commit 23e2225

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

Assets/GameFramework/Network/NetworkManager.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public sealed class NetworkManager:GameFrameworkModule,IUpdate
2323
private KcpService _kcpService;
2424
private int _port = 8359;
2525
private ProtobufPacker _protobufPacker;
26-
private readonly Dictionary<Type, Type> _messageHandler = new Dictionary<Type, Type>();
26+
private readonly Dictionary<Type, List<MessageHandlerBase>> _messageHandler = new Dictionary<Type, List<MessageHandlerBase>>();
2727

2828
private readonly Dictionary<ushort, Type> _messageCodeType = new Dictionary<ushort, Type>();
2929
//留给hotfix的接口
@@ -93,7 +93,9 @@ private void LoadMessageAttribute()
9393
if (attribute.Length > 0 && !item.IsAbstract && item.BaseType == typeof(MessageHandlerBase))
9494
{
9595
MessageHandlerAttribute msHanderAttibute = (MessageHandlerAttribute) attribute[0];
96-
_messageHandler[msHanderAttibute.TypeMessage] = item;
96+
if (!_messageHandler.ContainsKey(msHanderAttibute.TypeMessage))
97+
_messageHandler[msHanderAttibute.TypeMessage] = new List<MessageHandlerBase>();
98+
_messageHandler[msHanderAttibute.TypeMessage].Add((MessageHandlerBase)Activator.CreateInstance(item));
9799
}
98100

99101
//get message
@@ -126,8 +128,8 @@ private void ReceiveMessage(ushort typeCode, byte[] messageData)
126128
//消息处理类
127129
else if (_messageHandler.ContainsKey(type))
128130
{
129-
MessageHandlerBase handlerBase = (MessageHandlerBase)Activator.CreateInstance(_messageHandler[type]);
130-
handlerBase.Handle(message);
131+
foreach (var item in _messageHandler[type])
132+
item.Handle(message);
131133
}
132134
}
133135

0 commit comments

Comments
 (0)