GalaxyServer:Events

Материал из GreatGalaxy
Перейти к: навигация, поиск

Описание: События (event)

События (event) - это команды, рассылаемые сервером на клиенты.

Сервер может присылать разные события с параметрами или без.

Чаще всего событие - это ответ сервера на запрошенную вами операцию.

Клиент не будет получать события, пока не подпишется на нужные.

Что-бы можно было получать события от сервера, необходимо подписаться на нужные. Это удобно делать в каждом классе в методе OnEnable() для подписки и в методе OnDisable() для отписки, и/или в любом другом месте по необходимости.

/* События (Events) */
// Пример: Авто подписка на событие (при активации скрипта Unity)
 void OnEnable ()
 {
	// Подключение к Серверу
	GalaxyEvents.OnGalaxyConnect += OnGalaxyConnect;
	// ...другие события
 }
// Авто отписка от события (при деактивации скрипта Unity)
void OnDisable () {
	// Подключение к Серверу
        	GalaxyEvents.OnGalaxyConnect -= OnGalaxyConnect;
	// ...другие события
}

Далее в самих методах описываем нужную нам логику

public void OnGalaxyConnect(ErrorCode errorCode) 	//параметры метода обязательны, если требуются
{
   if (errorCode != ErrorCode.none) Debug.LogError("Ошибка: " + 
   ErrorMessages.RU[errorCode])
    else
   Debug.Log("Подключились к серверу");
}

Список событий, на которые можно подписаться: Внимание! Если есть приписка (Тест) или (Устаревшее) то это событие в разработке.


Подключение к Серверу

// Автоматически вызывается при подключении к серверу
void OnGalaxyConnect(ErrorCode errorCode)
// Пример
void OnGalaxyConnect(ErrorCode errorCode)
{
    if (errorCode != ErrorCode.none) Debug.Log("Ошибка: " + ErrorMessages.RU[errorCode]);
}

ВНИМАНИЕ! Ошибки подключения временно не отрабатываются


Отключение от сервера

// Автоматически вызывается при отключении от сервера. 
void OnGalaxyDisconnect(ErrorCode errorCode)

ВНИМАНИЕ! Параметр ErrorCode временно отсутствует.


Пришло сообщение в чат

// Автоматически вызывается, когда приходит сообщение в чат
void OnGalaxyChatMessage(uint clientId, string nikname, string textMessage, byte channel)

Из этого метода, сообщение можно отобразить в чате. clientId это идентификатор клиента, приславшего сообщение, nikname это ник приславшего, textMessage текст сообщения, channel это канал чата. 0 = общий


Создал и вошел в новую комнату

// Автоматически вызывается, когда ты создал комнату и вошел в нее.
// Вызов произойдет только у тебя
void OnGalaxyEnterToNewRoom(GGRoom room, ErrorCode errorCode)


Вход в комнату

// Автоматически вызывается, когда кто-то вошел в комнату, где и ты
void OnGalaxyRoomEnter(uint clientId, string nikname, ErrorCode errorCode)

Проверить, что именно вы подключились к комнате можно например так: if(clientId == GalaxyNetwork.Connection.clientId) Debug.Log("Я вошел в комнату"); Где, clientId - идентификатор клиента, nikname - ник игрока.

Вызывается, когда любой игрок подключается к комнате.

Новый, вошедший игрок, будет добавлен в список GalaxyNetwork.Players.


Выход из комнаты

// Автоматически вызывается, когда кто-то вышел из комнаты, где и ты
void OnGalaxyRoomExit(uint clientId, string nikname, ErrorCode errorCode)


Параметры комнаты изменились (кол-во игроков, название…)

// Автоматически вызывается, когда изменились параметры комнаты
void OnGalaxyRoomUpdate(GGRoom room, ErrorCode errorCode)

Параметры комнаты изменились, например название комнаты, количество игроков, статус (открыта или закрыта).

Если кол-во игроков =0, то комната удалена.

Так-же, вызывается если создана новая комната.

Количество игроков в комнате можно узнать из room.currentPlayersCount.

Внимание: Событие срабатывает только в Лобби и служит для обновления списка комнат


Список комнат

// Автоматически вызывается, когда сервер по вашему запросу прислал список комнат
void OnGalaxyRoomList(List<GGRoom> roomsList, ErrorCode errorCode)

Где, roomsList - список пришедших комната.

Вызывается, только в лобби, по запросу списка комнат игроком.

Список автоматически сортируется, в начале идут не заполненные комнаты.


Создание объекта

// Автоматически вызывается, когда создан сетевой объект
void OnGalaxyObjectInstantiate(GGobject netObject, ErrorCode errorCode)


Передача объекта другому клиенту

// Передача своего объекта другому игроку
void OnGalaxyObjectTransfer(GGObject netObject);


(устаревшее) Перемещение игрока

// Новая позиция игрока.
void OnGalaxyTransfornPosition(GGPlayer player, Vector3 position)


(устаревшее) Вращение игрока

// Новое направление игрока.
void OnGalaxyTransfornRotation(GGPlayer player, Quaternion rotation)


(отключено) Перемещение объекта

// Новая позиция сетевого объекта.
void OnGalaxyObjectPosition(GGobject netObject, Vector3 position)

Ссылку на объект можно получить: GalaxyNetwork.Objects[netId].isMy


(отключено) Вращение объекта

// Новое вращение сетевого объекта. 
void OnGalaxyObjectRotation(GGobject netObject, Quaternion rotation)

Ссылку на объект можно получить: GalaxyNetwork.Objects[netId].isMy



Изменились значения сетевых переменных

// Автоматически вызывается, когда в изменяется значение сетевой переменной
void OnGalaxyObjectNetVars(GGObject netObject)

Где, netObject - сетевой объект, на котором произошла синхронизация переменных.





Назад