RPC и Stream в SyncHub Cloud

1) Настало время перейти к синхронизации данных и отправки сообщений, а так же вызова функций на экземплярах игрока в других клиентах. Для начала давайте узнаем, что такое Stream в SyncHub Cloud и как им пользоваться. Если говорить простым языком, то Stream - это поток в котором Вы можете синхронизировать данные на своём игровом объекте между клиентами. Примеры, когда Вам пригодится Stream:

1) Синхронизировать одежду которая на персонаже

2) Синхронизировать цвета одежды

3) Синхронизировать здоровье/ману и т.д.

2) Если Вы ещё не до конца поняли, то ничего страшного, применим на практике. Откройте наш проект из прошлого урока, далее откройте префаб Player и давайте создадим ему что вроде оружия дочерним элементом

3) Теперь откройте скрипт PlayerController.cs и добавьте следующий код:

4) После редактирования скрипта добавьте наше оружие в переменную GunGM в инспекторе

5) Снова соберите сборку для windows как в прошлом уроке и запустите 2 клиента. На одном создайте комнату, а на другом подключитесь к ней

Теперь если Вы на одном из клиентов выключите оружие у персонажа по нажатию на клавишу “E”, то и на другом клиенте оно тоже отключится и обратно появится, если включите.

Вот как раз для подобных случаев и не только, нам и понадобится использовать Stream в SyncHub Cloud.

6) Теперь давайте перейдём к RPC в SyncHub Cloud. В нашем случае RPC - Удаленные вызовы процедур — это именно то, что следует из названия, а именно вызовы методов для удаленных клиентов, находящихся в комнате.

Отправка RPC делится на 3 типа, All, Others и ToMe.

  • All - Отправляет RPC всем игрокам в комнате, включая себя.

  • Others - Отправляет RPC всем, кроме себя

  • ToMe - Отправляет RPC себе и всем своим экземплярам у других игроков

7) Предлагаем разобрать RPC на практике. Откройте скрипт PlayerController.cs и допишите там следующий код:

8) Теперь создайте любой объект, куб или цилиндр, сделайте его префабом, а потом занесите в переменную CubePrefab

9) Соберите сборку и запустите 2 клиента, после нажмите на одном из клиентов клавишу “R” и вы увидите как у всех игроков заспавнится префаб куба, так произошло потому что мы отправили RPC метод всем игрокам включая себя

10) А теперь измените эту строку кода

syncHub_ConnectionView.SyncHub_RPC("SpawnObjectCube", TargetRPC.All); - вместо TargetRPC.All напишите TargetRPC.Others и снова повторите шаг 9. После нажатия на клавишу R, Вы увидите что кубик заспавнился только у другого клиента, а всё потому что мы отправили вызов RPC метода всем кроме себя

11) Вы так же можете передавать неограниченное количество параметров в RPC метод, вот пример: syncHub_ConnectionView.SyncHub_RPC("SpawnObjectCube", TargetRPC.Others, 1, true, 45f);

12) На этом всё, вы теперь знаете как работает RPC и Stream в SyncHub Cloud.

Last updated

Was this helpful?