void NetLogic(int mid, byte[] bytes) { if (mid == 1) { SyncPid pid; pid = SyncPid.Parser.ParseFrom(bytes); if (NetMgr.OnBorn != null) { NetMgr.OnBorn(pid.Pid); GameMgr.PlayerIDS.Add(pid.Pid); Debug.Log("Player: " + pid); Loom.QueueOnMainThread(() => { PlayerController.Instance.SendPosition(); }); } } if (mid == 200) { BroadCast bc; bc = BroadCast.Parser.ParseFrom(bytes); Debug.Log("mid 200: " + bc); if (bc.Tp == 1) { //talk if (bc.Content != null) { TalkCenter.Content = bc.Content; TalkCenter.PlayerID = bc.Pid.ToString(); TalkCenter.TalkFlag = true; } } if (bc.Tp == 2) { Debug.LogError("new player pid:" + bc.Pid.ToString()); //有玩家加入 if (!GameMgr.PlayerIDS.Contains(bc.Pid) && bc.Pid != PlayerController.Instance.MID) { GameMgr.BornPlayer(bc); GameMgr.PlayerIDS.Add(bc.Pid); Debug.Log("born player: " + bc.Pid + " pos: " + bc.P); } else { if (NetMgr.OnMove != null) { NetMgr.OnMove(bc); } } } //广播位移和旋转 if (bc.Tp == 3) { if (NetMgr.OnMove != null) { NetMgr.OnMove(bc); } } //广播移动的坐标 if (bc.Tp == 4) { if (NetMgr.OnMove != null) { NetMgr.OnMove(bc); } //Debug.LogError("new player pid:" + bc.Pid.ToString()); //有玩家加入 if (!GameMgr.PlayerIDS.Contains(bc.Pid) && bc.Pid != PlayerController.Instance.MID) { GameMgr.BornPlayer(bc); GameMgr.PlayerIDS.Add(bc.Pid); Debug.Log("born player: " + bc.Pid + " pos: " + bc.P); } else { if (NetMgr.OnMove != null) { NetMgr.OnMove(bc); } } } } //下线 if (mid == 201) { SyncPid pid; pid = SyncPid.Parser.ParseFrom(bytes); if (NetMgr.OnOver != null) { NetMgr.OnOver(pid.Pid); } Debug.Log("Player: " + pid.Pid + " leave home"); } //上线同步 //不需要显示所有玩家 服务器只给周围玩家 if (mid == 202) { SyncPlayers sPlayer; sPlayer = SyncPlayers.Parser.ParseFrom(bytes); Debug.Log("202 count: " + sPlayer.Ps.Count); ArrayList players = new ArrayList(); for (int i = 0; i < sPlayer.Ps.Count; i++) { Player p = sPlayer.Ps[i]; if (!GameMgr.PlayerIDS.Contains(p.Pid)) { //GameMgr.BornPlayer(p); players.Add(p); GameMgr.PlayerIDS.Add(p.Pid); } } GameMgr.BornPlayer(players); } if (mid == 301) { ProtoTest.FrameInfo frameInfo = ProtoTest.FrameInfo.Parser.ParseFrom(bytes); Loom.QueueOnMainThread(() => { if (frameInfo.Hit != null && frameInfo.Hit.Count > 0) { NetMgr.OnHit(frameInfo.Hit); } if (frameInfo.ObjBorn != null && frameInfo.ObjBorn.Count > 0) { NetMgr.OnBornBullet(frameInfo.ObjBorn); } if (frameInfo.ObjMove != null && frameInfo.ObjMove.Count > 0) { NetMgr.OnMoveBullet(frameInfo.ObjMove); } if (frameInfo.ObjDeleted != null && frameInfo.ObjDeleted.Count > 0) { NetMgr.OnBulletDeleted(frameInfo.ObjDeleted); } if (frameInfo.PlayerDead != null && frameInfo.PlayerDead.Count > 0) { NetMgr.OnPlayerDead(frameInfo.PlayerDead); } }); } }