@@ -23,7 +23,7 @@ public sealed class NetworkManager:GameFrameworkModule,IUpdate
23
23
private KcpService _kcpService ;
24
24
private int _port = 8359 ;
25
25
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 > > ( ) ;
27
27
28
28
private readonly Dictionary < ushort , Type > _messageCodeType = new Dictionary < ushort , Type > ( ) ;
29
29
//留给hotfix的接口
@@ -93,7 +93,9 @@ private void LoadMessageAttribute()
93
93
if ( attribute . Length > 0 && ! item . IsAbstract && item . BaseType == typeof ( MessageHandlerBase ) )
94
94
{
95
95
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 ) ) ;
97
99
}
98
100
99
101
//get message
@@ -126,8 +128,8 @@ private void ReceiveMessage(ushort typeCode, byte[] messageData)
126
128
//消息处理类
127
129
else if ( _messageHandler . ContainsKey ( type ) )
128
130
{
129
- MessageHandlerBase handlerBase = ( MessageHandlerBase ) Activator . CreateInstance ( _messageHandler [ type ] ) ;
130
- handlerBase . Handle ( message ) ;
131
+ foreach ( var item in _messageHandler [ type ] )
132
+ item . Handle ( message ) ;
131
133
}
132
134
}
133
135
0 commit comments