En este momento estás viendo Unity Lobby/Relay: la unión por código da como resultado un error de solicitud incorrecta 400

 – Unity

Unity Lobby/Relay: la unión por código da como resultado un error de solicitud incorrecta 400 – Unity

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

Deja una respuesta