В Build Settings, удалите все сцены и добавьте эти обе сцены из папки со сценами:
- Main
- Game
Откройте Main scene в редакторе и убедитесь что поле Game Scene в MultiScene Network Manager'e на сетевом объекте с сцене хранит в себе сцену Game. Это уже настроено по умолчанию, но если сцена Main была открыта и сохранена перед назначением её в Build Settings list, поле сцены Game может быть случайно очищено.
Сетевой менеджер MultiScene является производным от базового сетевого менеджера и отвечает за дополнительную загрузку экземпляров subscene и размещение игроков в их соответствующих экземплярах subscene, а также инициализацию SyncVar игроков. В нем есть поле сцены Game, где назначается игровая подписка, и поле экземпляров, чтобы указать, сколько экземпляров загружается на сервер.
Дополнительно, объект NetworkManager
должен содержать в себе компонент Scene Interest Management.
В этом примере экземпляры subscene дополнительно загружаются на сервер с помощью localPhysicsMode = LocalPhysicsMode.Physics3D
. Физические субсцены не моделируются автоматически, поэтому в каждой сцене есть игровой объект с общим скриптом PhysicsSimulator
висящем на нём же. Этот скрипт ничего не делает на клиенте, только на сервере.
Клиенты всегда имеют только один экземпляр субсцены, загружаемый дополнительно (без localPhysicsMode
), в то время как на сервере есть все эти субсцены.
File -> Build and Run
Запустите как минимум 3 экземпляра игры: Все они будут игроками-клиентами.
Нажмите Play в редакторе и нажмите Host (Сервер + Клиент) в HUD - это будет хост и 1-й игрок. Вы также можете использовать Server only по своему усмотрению.
Щелкните Client в созданных экземплярах.
- WASDQE клавиши для перемещения и поворота капсулы плеера, пробел для прыжка.
- Столкновение с маленькими цветными шарами приносит очки в зависимости от их цвета.
- Столкновение с большими тумблерами заставляет их вращаться... На стороне сервера они с Rigidbody non-kinematic.
- В верхней части игрового окна отображаются только результаты игроков в одной и той же субсцене.