Unity Lobby/Relay: la unión por código da como resultado un error de solicitud incorrecta 400
– UnityAssets3Free
buenas , me llamo josel luis y para hoy os traigo
esta unity pregunta
Como principiante, estoy tratando de probar nuevos paquetes de Unity: Unity Lobby y Unity Relay para hacer un juego de cartas multijugador. Entrar rápidamente al lobby y crear un lobby funciona bien, pero encontré un problema al ingresar al lobby usando el código del boleto. Aquí está el código:
public async void JoinByCode()
string lobbyCode = InputField.text;
Debug.Log(lobbyCode);
Debug.Log("Searching for lobby with code " + lobbyCode + "...");
// UpdateState ?.Invoke("Searching for lobby with code " + lobbyCode + "...");
try
JoinLobbyByCodeOptions options = new JoinLobbyByCodeOptions();
Lobby lobby = await Lobbies.Instance.JoinLobbyByCodeAsync(lobbyCode, options); //<--- results in error 400 - Bad Request
Debug.Log(lobby);
Debug.Log("Joined lobby: " + lobby.Id);
Debug.Log("Players in lobby: " + lobby.Players.Count);
//RelayCode
string joinCode = lobby.Data["joinCode"].Value;
Debug.Log("Kod dostępu: " + joinCode);
JoinAllocation allocation = await Relay.Instance.JoinAllocationAsync(joinCode);
//obiekt joindata
_joinData = new RelayJoinData
Key = allocation.Key,
Port = (ushort) allocation.RelayServer.Port,
AllocationID = allocation.AllocationId,
AllocationIDBytes = allocation.AllocationIdBytes,
ConnectionData = allocation.ConnectionData,
HostConnectionData = allocation.HostConnectionData,
IPv4Address = allocation.RelayServer.IpV4
;
_joinData.JoinCode = await Relay.Instance.GetJoinCodeAsync(allocation.AllocationId);
NetworkManager.Singleton.GetComponent<UnityTransport>().SetClientRelayData(
_joinData.IPv4Address,
_joinData.Port,
_joinData.AllocationIDBytes,
_joinData.Key,
_joinData.ConnectionData,
_joinData.HostConnectionData
);
NetworkManager.Singleton.StartClient();
Debug.Log("Found lobby, code: " + joinCode);
UpdateState?.Invoke("Joining lobby, code: " + joinCode + ", players in lobby: " + lobby.Players.Count);
MatchFound?.Invoke();
catch (LobbyServiceException e)
Debug.Log("There's a problem finding lobby, try again. " + e);
En general: el código de unión se pasa desde InputField, luego a JoinLobbyByCodeAsync y luego envía los datos del jugador al servidor. El problema es con el lobby variable: cuando intento probar JoinByCode, aparece un error:
There's a problem finding lobby, try again. Unity.Services.Lobbies.LobbyServiceException: request failed validation ---> Unity.Services.Lobbies.Http.HttpException`1[Unity.Services.Lobbies.Models.ErrorStatus]: HTTP/1.1 400 Bad Request
y no tengo ni idea de como solucionar este problema. Sí, estaba usando la documentación de Unity para el Lobby y tratando de encontrar información sobre el error 400 en el Lobby. Agradecería mucho si alguien me puede ayudar con este problema. ¡Salud!
1 respuesta 1
Tuve un problema similar, en mi caso, la entrada contenía un carácter adicional. Asegúrese de que solo haya 6 caracteres en su variable «lobbyCode» al verificarlo con lobbyCode.Length. También asegúrese de haber habilitado el servicio Lobby and Relay en el tablero.
Mi publicación para este problema:
https://foro.unity.com/threads/problem-joining-a-private-lobby-through-lobbycode-joinlobbybycodeasync.1287908/#post-8171102
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
sin mas,espero que te halla servido