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.
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.
No clique do botão, selecione o objeto que contém do scripte em seguida selecione o método aut();
Agora basta executar seu projeto, teste com um usuário e senha inválido e depois com usuário e senha válidos.
Se o usuário e senha for válido, a cena dois será carregada.
Muito simples, não? Caso houverem dúvidas, deixem nos comentários.