#unity3d #multiplayer #mirror
#Unity3D #Многопользовательский режим #unity3d-зеркало
Вопрос:
Я не уверен, что я здесь делаю не так, но, похоже, я не могу передать свое сообщение с сервера клиенту. Вот что у меня есть до сих пор:
protected virtual void RegisterHandlers(bool enable)
{
if (enable)
{
NetworkServer.RegisterHandler<ClientRequestLoadScene>(OnClientRequestedToLoadScene);
NetworkClient.RegisterHandler<ServerRequestLoadScene>(OnServerRequestLoadScene);
}
else
{
NetworkServer.UnregisterHandler<ClientRequestLoadScene>();
NetworkClient.UnregisterHandler<ServerRequestLoadScene>();
}
}
Вышеуказанное вызывается, когда экземпляр начинает регистрировать новый обработчик. Затем у меня есть вызов клиента:
ClientRequestLoadScene msg = new ClientRequestLoadScene();
msg.scene = scene;
NetworkClient.Send(msg);
Сервер получает его нормально. Затем сервер выполняет следующее:
private void OnClientRequestedToLoadScene(NetworkConnection conn, ClientRequestLoadScene msg)
{
...
...
ServerRequestLoadScene server_msg = new ServerRequestLoadScene();
server_msg.scene = msg.scene;
NetworkServer.SendToClientOfPlayer(conn.identity, msg);
...
...
}
Вышеупомянутое сообщение никогда не будет получено клиентом. Я также пробовал: NetworkServer.SendToAll(msg);
и это тоже никогда не принимается клиентом. Что я делаю не так?
Комментарии:
1. Есть ли причина для -1? Это законный вопрос. Я хотел бы услышать причину, по которой вы считаете, что этому здесь не место.
Ответ №1:
Проблема с вышеизложенным связана с этими строками:
server_msg.scene = msg.scene;
NetworkServer.SendToClientOfPlayer(conn.identity, msg);
Это должно было быть:
server_msg.scene = msg.scene;
conn.Send(server_msg);