Requisições WEB com Unity 3D

Gunnar CorreaGunnar Correa25/06/2016 às 10:46:56 - 7.681 acessos

Aprenda a fazer requisições em páginas da Internet usando o Unity 3D através da classe WWW.


No decorrer de um jogo após seu lançamento ou novas versões, é comum termos a necessidade de implementar uma requisição com algum servidor web, seja para notificações de atualizações, anúncios ou até mesmo para o cadastro e autenticação do usuário. Dentro do Unity, podemos facilmente fazer requisições utilizando duas classes, que são elas: WWWform e WWW.

Neste artigo você confere como fazer a programação para validar se um determinado usuário existe, para isto exige que você tenha ao menos um pouco de conhecimento dentro do Unity.

Vamos utilizar duas cenas, uma para a autenticação e outra com o jogo, caso o usuário exista, pois bem, na cena um, adicione dois Input Field, um Text e um button.

Os Input Field têm o nome de txtUsuario e txtSenha, sendo que o txtSenha tem sua propriedade Content Type marcada como Password. Já o componente Text será utilizado para exibir as mensagens de erros ou validações.

Organize seu Canvas como mostra a imagem abaixo.

Formulário utilizando o UI Canvas do Unity 5. Dois Text Field, um Text e um Button.

A requisição será feita no seguinte endereço: http://www.satellasoft.com/exemplos/autenticar.php, este arquivo está esperando uma requisição do tipo post para os campos txtUsuario e txtSenha. O usuário e senha para autenticação deverá ser: usuário = usuario senha = a123z.

Código 01:

<??php
    //Senha = a123z
    if(filter_input(INPUT_POST, "txtUsuario") == "usuario" && md5(filter_input(INPUT_POST, "txtSenha")) == "ee470cb6a8db3838cd196c215be7ef64"){
        echo "valid";
    }else{
        echo "none";
    }
     
?>

Se o usuário e senha for válido, retorna a mensagem “valid”, senão “none”.

Agora voltando para o Unity, crie um Script em C# chamado de Autenticar, atribua ele como um componente de qualquer objeto em cena, aqui foi atribuído a câmera. Insira o algoritmo mostrado abaixo, leia com muita atenção os comentários para que possa entender cada parte.

Código 02:

using UnityEngine;
using UnityEngine.UI;//Importamos a bibliteca UI
using System.Collections;
using UnityEngine.SceneManagement; //Importamos a biblioteca para gerenciamento de cenas

public class Autenticar : MonoBehaviour
{
    //Documentação: https://docs.unity3d.com/ScriptReference/WWWForm.html

    private string url = "http://www.satellasoft.com/exemplos/autenticar.php"; //Armazena a URL da requisição

    public InputField txtUsuario; //Referência ao componente Text correspondente ao usuário.
    public InputField txtSenha; //Referência ao componente Text correspondente a senha.
    public Text txtResultado; //Referência ao componente Text correspondente ao resultado.


    public void aut()
    {
        txtResultado.text = "Procesando..."; //Antes da requisição exibe o texto de processamento

        if (txtUsuario.text.Length >= 3 && txtSenha.text.Length >= 3) //Se o usuário e senha conter 3 ou mais letras, então retorna true
        {
            StartCoroutine(this.AutenticarUsuario()); // Inicia uma Coroutine para o método AutenticarUsuario()
        }
        else
        {
            txtResultado.text = "Formulário inválido"; //Se os dados forem inválidos, exive o texto
        }
    }

    //Método que retorna um IEnumerator, chamado de AutenticarUsuario
    public IEnumerator AutenticarUsuario()
    {

        WWWForm wForm = new WWWForm(); //Criamos uma instância do objeto WWWForm

        wForm.AddField("txtUsuario", txtUsuario.text); //O método addField recebe dois parâmentros, o primeiro é o nome do campo e o segundo o valor.
        wForm.AddField("txtSenha", txtSenha.text);

        WWW w = new WWW(url, wForm);
        /*
         * Criamos uma instância do objeto WWW e passamos dois parâmentros
         * 1º Param - URL na qual contém a página de validação
         * 2º Param - Passamos os campos e dados criados através do WWWForm
         */

        yield return w; //Aguardamos o retorno das informações

        if (!string.IsNullOrEmpty(w.error)) //Se a propriedade Error do retorno da variável w foi diferente de nulo ou vazio, é por que contém erros.
        {
            txtResultado.text = w.error; //Exibe a mensagem de erro
        }
        else
        {
            if (w.text.ToString() == "valid") //Se o valor retornado foi iguala valido..
            {
                txtResultado.text = "Carregando cena...";//Exibe o texto.
                SceneManager.LoadScene(1);//Chama a cena 1, correspondente ao jogo
            }
            else
            {
                txtResultado.text = "Usuário ou senha inválido"; //Exibe texto
            }
        }

    }
}

Com o script criado adicione as referências aos respectivos componentes do UI.

Atribuir componentes do UI para o script.

No clique do botão, selecione o objeto que contém do scripte em seguida selecione o método aut();

Adicionar o componente ao clique do botão e setar o método a ser disparado.

Agora basta executar seu projeto, teste com um usuário e senha inválido e depois com usuário e senha válidos.

Autenticando usuário na WEB com Unity 5.

Se o usuário e senha for válido, a cena dois será carregada.

Jogo carregando quando o usuário esta autenticado.

Muito simples, não? Caso houverem dúvidas, deixem nos comentários.


WWW Unity WWWForm Unity Requisições PHP Form Jogo Programação Desenvolvimento de jogos Games Indie Visual Studio StartCoroutine SceneManagement

Compartilhe


Gunnar Correa

Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web (FIPP), Especialista em Tecnologias na Educação (Unoeste) e Pós-graduando em Segurança da Informação (Universidade Cruzeiro do Sul). Começou seus estudos na área de programação quando era criança, e atualmente está estudando desenvolvimento de jogos. É CEO do portal SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.



Site atualizado

Olá, nosso site recebeu uma nova atualização e por conta disso, alguns artigos ainda estão sendo atualizados. Dependendo do conteúdo que você procura, poderá encontrar imagens e trechos de códigos mal formatados.

Estamos trabalhando para normalizar todos os conteúdos, muito em breve, esse problema não mais existirá.


Comentários