Esempio n. 1
0
    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);
    }