void _RPC_NotifyGameStart(IPEndPoint remote, byte[] bytes) { // Debuger.Log(LOG_TAG, "_RPC_NotifyGameStart()"); FSPGameStartParam data = PBSerializer.Deserialize <FSPGameStartParam>(bytes); PVPStartParam startParam = new PVPStartParam(); startParam.fspParam = data.fspParam; startParam.gameParam = PBSerializer.Deserialize <GameParam>(data.customGameParam); for (int i = 0; i < data.players.Count; i++) { FSPPlayerData player = data.players[i]; byte[] buff = player.customPlayerData; PlayerData pb = PBSerializer.Deserialize <PlayerData>(buff); pb.playerID = (int)player.id; pb.userID = (uint)player.userId; pb.userName = player.name; pb.teamID = (int)player.id; startParam.players.Add(pb); Debuger.Log(LOG_TAG, "_RPC_NotifyGameStart: {0}", pb.ToString()); } // EventManager.Instance.SendEvent<PVPStartParam>("OnGameStart", startParam); }
public void Start(object param) { _isStoped = false; PVPStartParam startParam = param as PVPStartParam; _gameMode = startParam.gameParam.mode; // 注册玩家 uint mainUserId = UserManager.Instance.UserData.id; var players = startParam.players; for (int i = 0; i < players.Count; i++) { if (players[i].userID == mainUserId) { _mainPlayerId = players[i].playerID; } //注册玩家数据,为在帧同步过程中创建玩家提供数据 //因为帧同步协议非常精简,不包含具体的玩家数据 BattleEngine.Instance.RegPlayerData(players[i]); } // 创建游戏 BattleEngine.Instance.EnterBattle(startParam.gameParam, this); m_context = BattleEngine.Instance.Context; // 帧同步 StartFSP(); // 接收输入 GameInput.onVKey = OnVKey; GameInput.DisableInput(); Scheduler.AddFixedUpdateListener(FixedUpdate); }