public override void ServerChangeScene(string newSceneName) { previousSceneName = SceneManager.GetActiveScene().name; if (newSceneName.StartsWith("Map")) { PlayerSpawnSystem.ClearSpawnPoints(); if (previousSceneName == "Menu") { for (int i = RoomPlayers.Count - 1; i >= 0; i--) { var conn = RoomPlayers[i].connectionToClient; var gameplayerInstance = Instantiate(gamePlayerPrefab); gameplayerInstance.SetDisplayName(RoomPlayers[i].DisplayName); gameplayerInstance.SetTeam(RoomPlayers[i].Team); NetworkServer.Destroy(conn.identity.gameObject); NetworkServer.ReplacePlayerForConnection(conn, gameplayerInstance.gameObject); } } } if (newSceneName == "GameEnd" && previousSceneName.StartsWith("Map")) { NetworkServer.Destroy(playerSpawnSystemInstance); playerSpawnSystemInstance = null; NetworkServer.Destroy(publicUIInstance); publicUIInstance = null; } if (newSceneName == "Menu" && roundSystemInstance != null) { NetworkServer.Destroy(roundSystemInstance); roundSystemInstance = null; roundSystemInstance2 = null; } base.ServerChangeScene(newSceneName); }