[TUTORIAL] Banco de Dados || PHP
5 participantes
Página 1 de 1
[TUTORIAL] Banco de Dados || PHP
Eu ja fiz tutoriais sobre como usar banco de dados com a Unity, todos sendo feitos dentro dela mesma através de plugins dll...
Mas tem outra técnica que você pode utilizar para acessar e modificar seu Banco de Dados. Usar PHP. Em contrapartida será necessario entender um minimo de PHP + Banco de Dados para utilizar.
No exemplo que vou mostrar, vamos criar um arquivo em PHP que irá gerenciar pelo lado de lá, e um em C# que gerenciará o lado de cá.
Para melhorar nossa integração vamos utilizar um sistema simples, que fará tudo na mesma pagina. Não sendo preciso criar diversas para cada coisa. Iremos utilizar o método GET do PHP para identificar o que queremos fazer e como fazer.
Script PHP (dbrequest.php):
- Código:
<?php
if (!isset($_GET["request"])) exit(); // perguntamos ao php se a variavel get request está ou nao setada. Se não tiver significa que alguem tentou acessar de algum lugar e podemos terminar a execução do php.
switch ($_GET["request"]) { // caso ela esteja setada vamos ao switch
case "getidbyname": GetIdByName(); // simples se o nome for igual vamos executar esta função
break;
case "getpassbyid": GetPasswordById(); // simples se o nome for igual vamos executar esta função
break;
default:
break;
}
function GetIdByName(){
if (!isset($_GET["name"])) exit(); // se a variavel não foi setada não acontece nada;
$name = $_GET["name"]; // guardando a variavel
//daqui pra baixo voce deve fazer o que voce quiser com o nome.....consulte no banco de dados, faça qualquer coisa que precise
if (strtolower($name) == strtolower("RenanMsV")) echo "50"; else echo "-1"; // se for igual a "RenanMsV" ele mostra 50, se não mostra -1
}
function GetPasswordById(){
if (!isset($_GET["id"])) exit(); // se a variavel não foi setada não acontece nada;
$id = $_GET["id"]; // guardando a variavel
//daqui pra baixo voce deve fazer o que voce quiser com o id.....consulte no banco de dados, faça qualquer coisa que precise
if ($id == 50) echo "senha123"; else echo "-1"; // se for igual a 50 ele mostra a senha, se não mostra -1
}
?>
Agora o script em C# na Unity. Nele temos 2 funções. Uma retorna o ID a partir de seu nome, e outra retorna a senha a partir de seu ID.
- Código:
using UnityEngine;
using System.Collections;
public class GetPHPData : MonoBehaviour {
public static int GetPlayerID_WithName(string url,string name){
url += name;
WWW www = new WWW (url);
while(!www.isDone){
Wait (0.25f);
}
return int.Parse (www.text);
}
public static string GetPlayerPass_WithID(string url,int id){
url += id;
WWW www = new WWW (url);
while(!www.isDone){
Wait (0.25f);
}
return www.text;
}
public static void Wait(float t){
while (t > 0) {
t -= Time.deltaTime;
}
}
}
Este script em C# não deve estar em objeto nenhum. Ele apenas contem as funções estaticas que utilizaremos para acessar os dados. Observe como eu fiz e poderá criar as suas proprias funções personalizadas para seu jogo.
Agora já podemos utilizar em qualquer lugar em nosso projeto as funções GetPHPData.GetPlayerID_WithName(string url,string name) e GetPHPData.GetPlayerPass_WithID(string url,int id).
Vamos a um exemplo:
Criaremos 2 textos UI e faremos com que eles exibam os dados recebidos pelas funções.
Script em C#:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PHPScript : MonoBehaviour {
int id = -1; // guardará o id
string pass = ""; // guardará a senha
public string userName = "RenanMsV"; // nome de usuario
public Text[] Textos; // textos ui que guardarao
void Start () {
id = GetPHPData.GetPlayerID_WithName ("http://inutiles.atspace.cc/unitygameserver/sql/dbrequest.php?request=getidbyname&name=", userName);
pass = GetPHPData.GetPlayerPass_WithID ("http://inutiles.atspace.cc/unitygameserver/sql/dbrequest.php?request=getpassbyid&id=", id);
Textos [0].text = "ID: " + id;
Textos [1].text = "SENHA: " + pass;
}
}
No exemplo utilizamos as funções criadas para retornar, guardar e exibir os valores.
É algo bem simples usar PHP com a Unity, mas é importante saber que a velocidade de retorno dos dados depende da conexão que o usuario tem com a internet. Nem preciso dizer que isto não funcionará se ele não tiver nenhuma conexão não é??
Lembrando que este exemplo tambem serve para praticamente qualquer tipo de arquivo que possa ser lido, (xml, html,css...). Claro que só com PHP poderemos manipular um banco de dados.
Então é isso, até mais. Duvidas perguntem abaixo.
RenanMSV- Instrutor
- PONTOS : 4461
REPUTAÇÃO : 356
Áreas de atuação : Programação em C#, PHP. SQL, JavaScript (Web)
Respeito as regras :
Re: [TUTORIAL] Banco de Dados || PHP
Renan meu irmao esta otimo o que vc fez tao bom quanto o meu sendo que aconselho a vc a colocar td privado e nao precisa passar o id para o banco coloca auto incremento.
Chilinger- MembroAvançado
- PONTOS : 4069
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: [TUTORIAL] Banco de Dados || PHP
Muito bom o tutorial!
Eu acabei desenvolvendo uma espécie de "framework" pra isso há algum tempo atrás. Basicamente são classes que manipulam dados dos jogadores como Exp, inventário, chat e tudo mais. Assim posso ter um servidor pra cada coisa. Em um jogo multiplayer acabo não sobrecarregando o servidor do jogo. Só que eu uso POST e sha-256 como criptografia de senhas por causa da minha paranoia com segurança.
Eu não recomento manipular o banco direto do C#, porque hoje em dia é muito fácil usar engenharia reversa nos executáveis e aí já era.
Eu acabei desenvolvendo uma espécie de "framework" pra isso há algum tempo atrás. Basicamente são classes que manipulam dados dos jogadores como Exp, inventário, chat e tudo mais. Assim posso ter um servidor pra cada coisa. Em um jogo multiplayer acabo não sobrecarregando o servidor do jogo. Só que eu uso POST e sha-256 como criptografia de senhas por causa da minha paranoia com segurança.
Eu não recomento manipular o banco direto do C#, porque hoje em dia é muito fácil usar engenharia reversa nos executáveis e aí já era.
Tópicos semelhantes
» [TUTORIAL] Banco de Dados || SQLite
» [TUTORIAL] Banco de dados || MySQL
» [TUTORIAL] Salvar dados com playerprefs facilmente.
» [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 1)
» [TUTORIAL] Banco de dados || MySQL
» [TUTORIAL] Salvar dados com playerprefs facilmente.
» [TUTORIAL] Como salvar dados em arquivos de texto .txt, .ini ou . qualquer coisa.
» [TUTORIAL] Salvando e carregando dados com serialização (Parte 1)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos