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; } } }
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); } }