UNET — Как правильно завершить сервер после вызова ClientRPC? Добрый день. Пытаюсь завершить игру в такой последовательности:Хост отсылает ClientRPC с сообщением "Bye"Хост останавливает работуВсе клиенты получают сообщениеВсе клиенты останавливают работу
Но есть проблема - если хост завершить сразу после вызова ClientRPC, то сообщение не отошлется, а клиенты словят ошибку ожидания.
Знаю, что можно решить это путем ожидания N времени после вызова ClientRPC, а потом уже завершать хост, но так как я не знаю сколько времени нужно ждать точно, выглядит это решение очень костыльным.
Может кто-нибудь знает, как отослать RPC сразу после вызова RPC функции, или, например, где хранятся все еще не отосланные RPC, чтобы их подсчитать и завершить хост, когда их будет 0? Буду рад увидеть другие адекватные способы решения.

21 Авг 2019 в 06:41
139 +1
0
Ответы
1

Есть несколько способов решить эту проблему:

Использовать сетевые сообщения: Вместо того, чтобы использовать ClientRPC для отправки сообщения "Bye", вы можете создать собственное сетевое сообщение, которое будет отправляться всем клиентам при завершении игры. В этом случае вы сможете управлять отправкой и завершением игры более точно.

Использовать счетчик RPC: Вы можете создать счетчик для отслеживания количества активных RPC и завершить игру, когда этот счетчик станет равен 0. При вызове RPC каждый игрок будет увеличивать счетчик, а при завершении RPC счетчик будет уменьшаться. Когда счетчик станет равен 0, вы можете безопасно завершить игру.

Использовать события Networking: Unity Networking имеет встроенный функционал для обработки событий на стороне клиента и сервера. Вы можете использовать события NetworkCallbacks, такие как OnClientDisconnect и OnStopClient, чтобы правильно завершить игру при отключении клиента или остановке сервера.

Выберите подход, который лучше всего подходит к вашей игре и реализуйте его для корректного завершения игры после отправки сообщения "Bye" всем клиентам.

20 Апр в 13:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир