В проекте сетевой игры, основанном на Учебнике по многопользовательской игре Unity, как предполагается, что нужно изменить сцену на новый уровень / карту, сохраняя при этом камеру / игрока GO / здоровье и т. д. в одной всеобъемлющей основной сцене. (например, Gameplay.unity с добавленным к нему Level1.unity или Level2.unity)
Вся связанная помощь кажется устаревшим кодом, решениями для одиночной игры или более специфическими обстоятельствами. Текущая документация Unity 5.5 предлагает ServerChangeScene, что, кажется, обеспечивает только половину решения.
Существуют ли что-то вроде ServerAddScene и ServerGetScene?
Попытки решения заключались в использовании DontDestroyOnLoad для известных игровых объектов в основной сцене и сохранении переменной currentMapNumber, синхронизированной между клиентскими NetworkManager, которая обновляется, когда игрок достигает триггера конца уровня. . Затем это проверяется в методе Update() и либо вызывает
networkManager.ServerChangeScene("Level" + networkManager.GetComponent<NetGame>().mapNumber);
or
SceneManager.LoadScene("Level" + networkManager.GetComponent<NetGame>().mapNumber, LoadSceneMode.Additive);
ни один из них не работает должным образом.