Зеркальная сеть в Unity. OnServerSceneChanged не вызывается после смены сценыC#

Место общения программистов C#
Anonymous
Зеркальная сеть в Unity. OnServerSceneChanged не вызывается после смены сцены

Сообщение Anonymous »

В моей игре я меняю сцену на игровую с помощью переопределенной функции ServerChangeScene(). Это делается в NetworkManagerLobby.cs
NetworkManagerLobby.cs:

Код: Выделить всё

public void StartTransitionScene() //sets scene to loading scene
{
if (SceneManager.GetActiveScene().path == menuScene)
{
if (!IsReadyToStart()) { return; }

ServerChangeScene("Game");
}
}

public override void ServerChangeScene(string newSceneName)
{
if (SceneManager.GetActiveScene().path == menuScene && newSceneName.Contains("Game"))
{
for (int i = RoomPlayers.Count - 1; i >= 0; i--) //converts room players to game players
{
var conn = RoomPlayers[i].connectionToClient;
var gameplayerInstance = Instantiate(gamePlayerPrefab);
gameplayerInstance.SetDisplayName(RoomPlayers[i].DisplayName);

NetworkServer.Destroy(conn.identity.gameObject);

NetworkServer.ReplacePlayerForConnection(conn, gameplayerInstance.gameObject);
}
}
base.ServerChangeScene(newSceneName);
}

public override void OnServerSceneChanged(string sceneName)
{
if(sceneName.Contains("Game"))
{
GameObject playerSpawnSystemInstance = Instantiate(playerSpawnSystem);
NetworkServer.Spawn(playerSpawnSystemInstance);
}

}
Затем сцена переходит в сцену игры (NetworkManager не уничтожается и присутствует в сцене), но обратный вызов OnServerSceneChanged не вызывается. Вот почему игроки не появляются в точках появления на сцене.
Фото сцены
Я изолировал проблему с помощью этой функции, так как думал, что виновата сама система появления. проблема. Функция не вызывалась при отладке.

Подробнее здесь: https://stackoverflow.com/questions/768 ... fter-scene

Вернуться в «C#»