_gameObject - Игровой объект который имеет компонент SyncHub_ConnectionView.cs
7) Заспавнить игровой серверный объект игрока, можно передавать параметры
_prefab - Префаб игрового объекта (НЕ САМ ПРЕФАБ ИГРОКА)
_position - Позиция
_rotation - Поворот
_scale - Скейл (размер)
8) Вызвать RPC функцию у игроков
_methodName - Наименование метода
_rpc - Тип отправки, всем или всем кроме себя
_parameters - Передаваемые параметры
Полный пример:
ВАЖНО! Скрипт в котором будет функция SendDamage с атрибутом [SyncHubRPC] должен находиться на том же объекте что и компонент SyncHub_ConnectionView.cs
9) Подписаться на Stream поток для потоковой передачи данных
Полный пример:
Для удобства конвертации переменных, в плагине написаны дополнительные вспомогательные функции
Получаем свой компонент SyncHub_ConnectionView и отправляем всем
включая себя "просьбу" выполнить функцию SendDamage с параметрами "Alex", 25
this.GetComponent<SyncHub_ConnectionView>().SyncHub_RPC("SendDamage", TargetRPC.All, "Alex", 25);
[SyncHubRPC]
public void SendDamage (string name, int damage)
{
// получаем данные и выполняем функцию
}
SyncHub_ConnectionView.OnGetStream.AddListener(OnGetStream);
private void OnGetStream(SyncHub_ConnectionView сonnectionView, string package_name, bool isWriting, params object[] coming_values)
{
//Запись и отправка данных
if (isWriting)
{
сonnectionView.SendNext("my_name_package", params object[]);
}
else //Чтение полученных данных
{
// смотрим если пришедшее имя пакета не совпадает с отправленным именем,
//не выполняем дальше код
if (package_name != "my_name_package") return;
var_0 = coming_values[0];
}
}
SyncHub_ConnectionView.OnGetStream.AddListener(OnGetStream);
private void OnGetStream(SyncHub_ConnectionView сonnectionView, string package_name, bool isWriting, params object[] coming_values)
{
//Запись и отправка данных
if (isWriting)
{
//Имя пакета вы можете задавать любое
// Вы можете передавать неограниченное количество переменных
// Поддерживаются типы string, float, bool, int
сonnectionView.SendNext("my_name_package", 65, 0.3f, "test", false);
}
else //Чтение полученных данных
{
// смотрим если пришедшее имя пакета не совпадает с отправленным именем,
//не выполняем дальше код
if (package_name != "my_name_package") return;
// Важно!!! В каком порядке отправили, в таком порядке и читаем
//65 - 0
//0.3f - 1
//"test" - 2
//false - 3
int var_0 = coming_values[0].ToInt32();
float var_1 = coming_values[1].ToFloat();
string var_2 = coming_values[2].ToString();
bool var_3 = coming_values[3].ToBool();
}
}