Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Unity UNET Передача данных без NetworkBehavior

Unity UNET Передача данных без NetworkBehavior

Поделиться
3daПостоялецwww19 мая 201719:03#0
Суть такова:
Нужно передать логин и пароль на сервер, затем на основании этих данных получать стартовые параметры игрока и заспавнить объект Player.

Однако как организовать это взаимодействие, если оно происходит не в рамках NetworkBehavior? Тут ведь не получится использовать подход с атрибутами [Command] и [ClientRpc].

Была идея сделать так чтобы при подключении спавнилась сущность, в которой как раз бы и происходила передача пароля через [Command], а затем бы уже спавнился реальный объёкт Player.
Но это какой-то изврат? Или нет?

Red_Baron_Постоялецwww19 мая 201722:28#1
NetworkMessages, есть в API Unity.
3daПостоялецwww19 мая 201722:45#2
Да, спасибо, уже разобрался. Теперь в другом проблема.
При получении сообщения на сервере  networkConnection.conn.Disconnect(); не работает. Я ожидаю что клиент будет отключен от сервера, но этого не происходит.
Red_Baron_Постоялецwww20 мая 20170:33#3
3da
Вы отключаете клиента с заспавненными объектами или просто подключившегося и передавшего NetworkMessage?
3daПостоялецwww20 мая 20175:09#4
Red_Baron_
> Вы отключаете клиента с заспавненными объектами или просто подключившегося и
> передавшего NetworkMessage?
А в чём разница?
Red_Baron_Постоялецwww20 мая 20178:46#5
3da
Просто у меня проблемы с дисконнектом бывали в основном с заспавненными игроками. А как выражается то, что дисконнекта не происходит? На клиенте не отключается? Чему равен параметр disconnectTimeout?
3daПостоялецwww20 мая 201715:40#6
Red_Baron_
> А как выражается то, что дисконнекта не происходит? На клиенте не отключается?
Да, на сервере есть команда Disconnect, но оно никак не влияет ни на что... Игрок продолжает быть на сцене и им можно управлять.

Попробовал использовать NetworkServer.DestroyPlayersForConnection(conn);
Но не помогло, так как Player уничтожается, а соединение всё ещё висит.

Red_Baron_
> Чему равен параметр disconnectTimeout?
Это по дефолту

3daПостоялецwww20 мая 201719:23#7
Похоже что оно работает, просто не работает в режиме Host. Я ожидал что локальное соединение будет обработано, но нет. Сейчас проверил коннект между двумя разными клиентами - вроде работает.
Red_Baron_Постоялецwww22 мая 20170:55#8
3da
В режиме хоста  - возможно, не проверял.  Между чистым сервером и чистым клиентом тоже все должно корректно работать, только отключаться может не сразу а через disconnectTimeout.

Правка: 22 мая 2017 1:08

/ Форум / Программирование игр / Сеть

Тема закрыта.

2001—2017 © GameDev.ru — Разработка игр