Взаимодействие

Когда вы создаете многопользовательскую игру, в дополнение к синхронизации свойств сетевых игровых объектов, вам, вероятно, потребуется отправлять, получать и реагировать на другие фрагменты информации - например, когда начинается матч, когда игрок присоединяется к матчу или покидает его, или другую информацию, специфичную для вашего типа игры, например, уведомление всех игроков о том, что флаг был захвачен в игре в стиле “захват флага”..

В рамках высокоуровневого API сети Mirror существует три основных способа передачи такого рода информации.

Удаленные действия

Удаленные действия позволяют вам вызывать метод в вашем скрипте по сети. Вы можете заставить сервер вызывать методы для всех клиентов или конкретно для отдельных клиентов. Вы также можете заставить клиентов вызывать методы на сервере. Используя удаленные действия, вы можете передавать данные в качестве параметров своим методам очень похожим образом на то, как вы вызываете методы в локальных (не многопользовательских) проектах.

Сетевые обратные вызовы

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

  • Обратные вызовы Network Manager'a, для обратных вызовов, относящихся к самому Network Manager'у (например, при подключении или отключении клиентов)

  • Обратные вызовы Network behaviour, для обратных вызовов, относящихся к отдельным сетевым игровым объектам (например, когда вызывается его функция запуска или что должен делать этот конкретный игровой объект, если к игре присоединяется новый игрок)

Network Messages

Network messages являются “низкоуровневым” подходом к отправке сообщений (хотя они по-прежнему классифицируются как часть сетевого “высокоуровневого API”). Они позволяют отправлять данные непосредственно между клиентами и сервером с помощью сценариев. Вы можете отправлять базовые типы данных (int, string и т.д.), а также наиболее распространенные типы Unity (такие как Vector3). Поскольку вы реализуете это самостоятельно, эти сообщения не связаны напрямую с какими-либо конкретными игровыми объектами или событиями Unity - вам решать, для чего они предназначены, и реализовывать их!

Last updated