Beispiel #1
0
        private void MoveCallback(byte[] data)
        {
            S2C_Move move = NetworkSerializer.Deserialize <S2C_Move>(data);

            frame = move.Frame;
            if (move.Entities == null) //表示当前没有游戏物体
            {
                return;
            }
            //实现其他物体同步移动
            foreach (var entity in move.Entities)
            {
                //只同步他人
                Vector2Int pos = new Vector2Int(entity.X, entity.Y);
                if (otherInstances.ContainsKey(entity.Id))
                {
                    otherInstances[entity.Id].transform.Position = pos;
                }
            }
        }
Beispiel #2
0
        public void Broadcast()
        {
            S2C_Move move = new S2C_Move();

            move.Frame    = frame;
            move.Entities = new List <Entity>();
            frame++;
            foreach (var dict in instances.Values)
            {
                foreach (var entity in dict.Values)
                {
                    move.Entities.Add(entity);
                }
            }

            //广播所有人
            foreach (var client in clients.Keys)
            {
                Send(client, (ushort)NetworkRole.Server, (ushort)GameCmd.Move, move);
            }
        }