Пример #1
0
        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);
        }
Пример #2
0
        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);
        }