Функции
1) Подключиться к серверу
SyncHub_ConnectionManager.Instance.ConnectToServer();2) Подключиться к комнате по её названию
SyncHub_ConnectionManager.Instance.ConnectRoom(string _nameRoom);_nameRoom- Название комнаты
3) Отключиться от комнаты
SyncHub_ConnectionManager.Instance.DisconnectRoom();4) Запросить список комнат
SyncHub_ConnectionManager.Instance.GetListRooms();5) Создать комнату
SyncHub_ConnectionManager.Instance.CreateRoom(string _nameRoom, string _sceneName, int _maxPlayers);_nameRoom- Название комнаты_sceneName- Название сцены которая должна будет загрузится_maxPlayers- Максимальное количество игроков в ней
6) Удалить у всех игроков свой серверный игровой объект
 SyncHub_ConnectionManager.Instance.DestroyGameObject(GameObject _gameObject);_gameObject- Игровой объект который имеет компонентSyncHub_ConnectionView.cs
7) Заспавнить игровой серверный объект игрока, можно передавать параметры
SpawnObject(GameObject _prefab);
SpawnObject(GameObject _prefab, Vector3 _position);
SpawnObject(GameObject _prefab, Vector3 _position, Vector3 _rotation);
SpawnObject(GameObject _prefab, Vector3 _position, Vector3 _rotation, Vector3 _scale)_prefab- Префаб игрового объекта (НЕ САМ ПРЕФАБ ИГРОКА)_position- Позиция_rotation- Поворот_scale- Скейл (размер)
8) Вызвать RPC функцию у игроков
SyncHub_ConnectionView.SyncHub_RPC(string _methodName, TargetRPC _rpc, params object[] _parameters)_methodName- Наименование метода_rpc- Тип отправки, всем или всем кроме себя_parameters- Передаваемые параметры
Полный пример:
 Получаем свой компонент SyncHub_ConnectionView и отправляем всем 
 включая себя "просьбу" выполнить функцию SendDamage с параметрами "Alex", 25
 this.GetComponent<SyncHub_ConnectionView>().SyncHub_RPC("SendDamage", TargetRPC.All, "Alex", 25); [SyncHubRPC]
 public void SendDamage (string name, int damage)
 {
     // получаем данные и выполняем функцию
 }ВАЖНО! Скрипт в котором будет функция SendDamage  с атрибутом [SyncHubRPC] должен находиться на том же объекте что и компонент SyncHub_ConnectionView.cs 
9) Подписаться на Stream поток для потоковой передачи данных
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();
    }
}Для удобства конвертации переменных, в плагине написаны дополнительные вспомогательные функции
variable.ToInt32();
variable.ToFloat();
variable.ToBool();Last updated
Was this helpful?