public static void SceneLoaded(int clientID, Packet packet) { string sceneName = packet.ReadString(); string prefabName = packet.ReadString(); //到时候删 Debug.Log($"客户端{clientID}加载好了场地{sceneName}"); ServerLogic.InitClientPlayer(clientID, prefabName); //ServerSend.PlayerSpawned(clientID, prefabName); }
public void StartServer(int port = 6960) { Server.Start(50, port); //下面是临时处理措施 void LoadDemo(int cid) { if (Server.state == ServerState.Started && Server.PlayerCount == 1 && cid > 0) { Debug.Log($"服务端尝试加载DemoStage..."); ServerLogic.RefreshBeforeLoad(); GameManager.instance.RefreshBeforeLoad(); GameManager.instance.BeginLoadScene("DemoStage", (string name) => { Debug.Log($"DemoStage加载完成!"); //ThreadManager.ExecuteOnMainThread(()=> { // ServerLogic.AttachRigidbodyToAll(StageObjectCategory.Ball); //}); ThreadManager.ExecuteOnMainThread(ServerLogic.AttachInfoSendersToAll); //ThreadManager.ExecuteOnMainThread(() => //{ //}); ServerLogic.InitBall("DemoBall"); }); //暂且先载入DemoStage Server.state = ServerState.InStage; Actions.PlayerCountUpatedAction = NoPlayer; //Actions.ClientTCPConnectedAction -= LoadDemo; } } void NoPlayer(int playerNum) { if (Server.PlayerCount == 0) { GameManager.instance.StopAllCoroutines(); GameManager.instance.BeginLoadScene("TestScene", (string name) => { Debug.Log($"TestStage加载完成!"); }); Server.state = ServerState.Started; } } Actions.ClientTCPConnectedAction += LoadDemo; Actions.ClientUDPConnectedAction += (int cid) => { if (!string.IsNullOrEmpty(Server.clients[cid].username)) { ServerSend.SceneLoadingStarted(cid, "DemoStage"); } }; Actions.ClientDisconnectedAction += ServerLogic.PlayerDisconnected; }
public static void StageSituation(int clientID, Packet packet) { List <StageObjectPair> clientObjs = new List <StageObjectPair>(); while (packet.UnreadLength() > 0) { clientObjs.Add(new StageObjectPair { category = (StageObjectCategory)packet.ReadInt(), id = packet.ReadInt() }); } ServerLogic.StageSynchronize(clientID, clientObjs); }