Объекты на сцене

В многопользовательской системе Mirror есть два типа сетевых игровых объектов:

  • Те, которые создаются динамически во время выполнения

  • Те, которые сохраняются как часть сцены

Игровые объекты, которые создаются динамически во время выполнения, используют многопользовательскую систему создания, и Prefab'ы, из которых они создаются, должны быть зарегистрированы в списке Spawnable Prefabs в Network Manager.

Однако сетевые игровые объекты, которые вы сохраняете как часть сцены (и, следовательно, уже существуют в сцене при ее загрузке), обрабатываются по-другому. Эти игровые объекты загружаются как часть сцены как на клиенте, так и на сервере и существуют во время выполнения до отправки многопользовательской системой каких-либо сообщений о появлении.

Когда сцена загружена, все сетевые игровые объекты в сцене отключаются как на клиенте, так и на сервере. Затем, когда сцена полностью загружена, Network Manager автоматически обрабатывает сетевые игровые объекты сцены, регистрируя их все (и, следовательно, заставляя их синхронизироваться между клиентами) и активируя их, как если бы они были созданы во время выполнения. Сетевые игровые объекты не будут включены до тех пор, пока клиент не запросит для себя игровой объект.

Сохранение сетевых игровых объектов в вашей сцене (вместо того, чтобы динамически создавать их после загрузки сцены) имеет некоторые преимущества:

  • Они загружаются вместе с уровнем, поэтому паузы во время выполнения не будет.

  • Они могут иметь определенные модификации, отличающиеся от Prefab'ов

  • Другие экземпляры игровых объектов в сцене могут ссылаться на них, что позволяет избежать необходимости использовать код для поиска игровых объектов и создания ссылок на них во время выполнения.

Когда Network Manager спавнит игровые объекты сцены, эти игровые объекты ведут себя как динамически создаваемые игровые объекты. Mirror отправляет им обновления и вызывает ClientRpc.

Если игровой объект сцены уничтожается на сервере до того, как клиент присоединяется к игре, то он никогда не включится на новых клиентах, которые присоединяются.

Когда клиент подключается, клиенту отправляется сообщение о появлении ObjectSpawnScene для каждого из игровых объектов сцены, существующих на сервере и видимых этому клиенту. Это сообщение приводит к включению игрового объекта на клиенте и содержит в себе последнее состояние этого игрового объекта с сервера. Это означает, что на клиенте активируются только те игровые объекты, которые видны клиенту и не уничтожены на сервере. Как и обычные игровые объекты, не относящиеся к сцене, эти игровые объекты сцены запускаются с последним состоянием, когда клиент присоединяется к игре.

Last updated