public override void Handle(object sender, Packet packet) { GameMessage gameMessage = (GameMessage)packet; int frameIndex = gameMessage.Frame; List <Packet> list = new List <Packet>(); Command[] comm = new Command[gameMessage.Command.Count]; gameMessage.Command.CopyTo(comm, 0); // comm 是一帧中的所有事件的帧命令数据 for (int i = 0; i < comm.Length; i++) { if (comm[i].Type != -1) { using (MemoryStream stream = new MemoryStream()) { byte[] data = comm[i].Data.ToByteArray(); stream.Write(data, 0, data.Length); stream.Position = 0; //Debug.Log(stream.Length); Type packetType = NetworkChannelHelper.GetAllPacketType(comm[i].Type); object instance = Activator.CreateInstance(packetType); Packet framePacket = (Packet)ProtobufHelper.FromStream(instance, stream); list.Add(framePacket); // list是一帧的所有数据包命令 } } } // 将帧数据保存下来 //Debug.Log("AddOneFrame ---- frameIndex: " + frameIndex); GameEntry.LockManager.AddOneFrame(frameIndex, list); }
public static void InitNetWork(string host, int port) { // 启动服务器(服务端的代码随便找随便改的,大家可以忽略,假设有个服务端就行了) //Demo8_SocketServer.Start(); // 获取框架网络组件 NetworkComponent Network = UnityGameFramework.Runtime.GameEntry.GetComponent <NetworkComponent>(); // 获取框架事件组件 //EventComponent Event = UnityGameFramework.Runtime.GameEntry.GetComponent<EventComponent>(); // Event.Subscribe(NetworkConnectedEventArgs.EventId, OnConnected); // 创建频道 m_NetworkChannelHelper = new NetworkChannelHelper(); m_Channel = Network.CreateNetworkChannel("testName", m_NetworkChannelHelper); // 连接服务器 m_Channel.Connect(IPAddress.Parse(host), port); }