Unity Networking: восстановление серверных объектов на сцене после изменения сцены

Я использую высокоуровневый API, и у меня есть SceneA и SceneB.

SceneA имеет пару созданных объектов. После нового подключения каждый клиент получает список объектов и порождает его.

Но когда я меняю networkScene A на SceneB и возвращаюсь назад, я не вижу на SceneA объектов, которые были отрисованы раньше.

Есть ли какое-нибудь решение, как вернуться к SceneA и обновить объекты сцены в соответствии с сетевым экземпляром SceneA?

В SceneA я использую что-то вроде этого:

    public override void OnStartServer()
    {
        SpawnObjects();
    }

person featureoffuture    schedule 13.09.2018    source источник
comment
Пробовали ли вы использовать следующий DontDestroyOnLoad(), в котором может быть проблема. Подробнее об этом - docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html   -  person aidangig    schedule 14.09.2018


Ответы (1)


Имейте в виду, что сетевые объекты ДОЛЖНЫ создаваться каждый раз при загрузке сцены.

Так что, если они не появляются «автоматически», вероятно, вы не задали для этого никакой логики.

Итак, рабочий процесс должен быть примерно таким:

  • SceneA имеет префаб, который вызывает объекты при запуске -> Spawner

  • Когда игроки подключаются к сцене, будет создан Spawner и в его функции Start () будет порождаться материал.

  • Когда вы переходите к сцене B, если вы не устанавливаете DonDestroyOnLoad (), предыдущие объекты исчезнут на B

  • Но если вы снова вернетесь к A, поскольку игра снова «создает» сцену A, средство создания будет создано снова и снова создаст материал.

person Lotan    schedule 19.09.2018