public static void send(PacketBase packet) { m_Channel.Send(packet); }
/// <summary> /// 初始化网络频道辅助器。 /// </summary> /// <param name="networkChannel">网络频道。</param> public void Initialize(INetworkChannel networkChannel) { m_NetworkChannel = networkChannel; // 反射注册包和包处理函数。 Type packetBaseType = typeof(SCPacketBase); Type CSpacketBaseType = typeof(CSPacketBase); Type packetHandlerBaseType = typeof(PacketHandlerBase); Assembly assembly = Assembly.GetExecutingAssembly(); Type[] types = assembly.GetTypes(); for (int i = 0; i < types.Length; i++) { if (!types[i].IsClass || types[i].IsAbstract) { continue; } if (types[i].BaseType == packetBaseType) { PacketBase packetBase = (PacketBase)Activator.CreateInstance(types[i]); Type packetType = GetServerToClientPacketType(packetBase.Id); if (packetType != null) { Log.Warning("Already exist packet type '{0}', check '{1}' or '{2}'?.", packetBase.Id.ToString(), packetType.Name, packetBase.GetType().Name); continue; } m_ServerToClientPacketTypes.Add(packetBase.Id, types[i]); m_AllPacketTypes.Add(packetBase.Id, types[i]); } else if (types[i].BaseType == packetHandlerBaseType) { IPacketHandler packetHandler = (IPacketHandler)Activator.CreateInstance(types[i]); m_NetworkChannel.RegisterHandler(packetHandler); } else if (types[i].BaseType == CSpacketBaseType) { PacketBase packetBase = (PacketBase)Activator.CreateInstance(types[i]); Type packetType = GetClientToServerPacketType(packetBase.Id); if (packetType != null) { Log.Warning("Already exist packet type '{0}', check '{1}' or '{2}'?.", packetBase.Id.ToString(), packetType.Name, packetBase.GetType().Name); continue; } m_ClientToServerPacketTypes.Add(packetBase.Id, types[i]); m_AllPacketTypes.Add(packetBase.Id, types[i]); } } // 获取框架事件组件 EventComponent Event = UnityGameFramework.Runtime.GameEntry.GetComponent <EventComponent>(); Event.Subscribe(UnityGameFramework.Runtime.NetworkConnectedEventArgs.EventId, OnNetworkConnected); Event.Subscribe(UnityGameFramework.Runtime.NetworkClosedEventArgs.EventId, OnNetworkClosed); Event.Subscribe(UnityGameFramework.Runtime.NetworkMissHeartBeatEventArgs.EventId, OnNetworkMissHeartBeat); Event.Subscribe(UnityGameFramework.Runtime.NetworkErrorEventArgs.EventId, OnNetworkError); Event.Subscribe(UnityGameFramework.Runtime.NetworkCustomErrorEventArgs.EventId, OnNetworkCustomError); }
private static void Send(PacketBase packet) { NetWorkChannel.send(packet); }