Version: 2017.2
Элементы сетевого взаимодействия в Unity
Обзор сети (Network View)

Network Views

(For new projects, you should use the new networking system introduced in 5.1. This information is for legacy projects using the old networking system.)

Network views - это основные компоненты, участвующие в обмене данными по сети. Они позволяют использовать два вида сетевых взаимодействий: State Synchronization (Синхронизация состояний) и Remote Procedure Calls (Удаленный вызов процедур).

Network Views наблюдает за конкретными объектами и замечает изменения. Этими изменениями он обменивается с другими клиентами сети, чтобы обеспечить у всех их изменения состояния. Эта концепция известна как state synchronization (синхронизация состояний) и вы может узнать о ней больше на State Synchronization page.

Существуют некоторые ситуации, в которых вам не хотелось бы иметь все накладные расходы, связанные с синхронизацией состояний между клиентами, например, когда передаётся позиция нового объекта или перерожденного игрока. Поскольку подобные события случаются нечасто, нет смысла синхронизировать состояния вовлеченных объектов. Вместо этого, вы можете использовать удаленный вызов процедуры remote procedure call, чтобы сообщить клиентам или серверу, чтобы выполнили такое действие. Больше информации о Remote Procedure Calls можно найти в RPC manual page.

Технические детали

Network View идентифицируется по сети при помощи его NetworkViewID, который, по существу, просто идентификатор, однако оговаривается его уникальность среди всех подключенных машин. Он представляет из себя 128-битное число, которое, если возможно, автоматически сжимается до 16 бит, передаваемых по сети.

Каждый прибывающий на сторону клиента пакет передаётся заданному NetworkView, который определяется при помощи NetworkViewID. Поступая таким образом, Юнити может правильно выбрать нужный NetworkView, распаковать данные и применить данные входящего пакета к объекту, за которым отвечает этот Network View.

Больше информации об использовании в редакторе компонентов Network View можно найти в Network View Component Reference page.

Если вы используете Network.Instantiate() для создания сетевых объектов, вам не стоит волноваться о распределении компонентов Network View, не понадобиться присваивать их вручную соответствующим образом. Всё это сделается автоматически.

Однако, вы можете и вручную устанавливать значения NetworkViewID для каждого Network View, используя Network.AllocateViewID. В документации API скриптов показан пример того, как вручную можно создать объект на каждом клиенте при помощи RPC функции и вручную выставить NetworkViewID, используя AllocateViewID.

Элементы сетевого взаимодействия в Unity
Обзор сети (Network View)