Tutorial: Usando SQLite no Unity3D com C#



Olá. Nesse tutorial veremos como usar banco de dados embarcados com Unity3D usando o SQLite.
Um dos processos mais comuns em jogos e aplicações é o de salvar informações em algum lugar. Elas serão usadas mais tarde para, por exemplo, quando temos que salvar o estado do jogo para fecharmos o jogo.

SQLite no Unity3D com C#

É possível realizar esse processo de diversas formas, inclusive, no Unity3D existe a class PlayerPrefes entre outras formas que precisariam de mais alguma implementação.
Essas soluções são muito boas e, em muitos casos, resolvem por completo a a maior parte das situações. Contudo, quando estamos falando de um jogo de RPG com muitos personagens, atributos, classes, etc, por exemplo, imagino que algo assim tão simples não seja a solução ideal.
Uma boa opção para tais situações é usar banco de dados relacionais como o Sqlite que vai embarcado junto com o jogo e usa a linguagem Sql para realizar consultas.
wb-sakila-eer
Então veremos como fazer a integração entre o Unity3D com o SQLite usando C#.

Alerta!

Nesse tutorial julgo que você já em algum conhecimento com o Unity3D e com Sql.
Se você atende a esses requisitos, vamos lá, mas não se preocupe que aqui não serão abordados temas muito complicados referentes a essas tecnologias.
Outro ponto que quero deixar claro aqui é que este tutorial não tem intenção de ser definitivo, mas sim como algo para apresentar as funcionalidades.

Instalação

Primeiro você precisa criar um projeto no Unity3D chame-o de, pro exemplo, TesteSQLite, não importa se é 2D ou 3D. Enquanto o Unity3D está preparando o projeto para você vamos fazer os downloads do que vamos precisar para o projeto clicando aqui.
Crie uma pasta chamada “Plugins” dentro do diretório Assets e descompacte o conteúdo do arquivo baixo dentro dela.
Note que um dos arquivos é o sqlite3.dll. Você deve obter a versão ideal para o seu sistema operacional x86 ou 64bit. Para isso, basta você encontrá-las nesse site.

Vamos ao script

Agora crie um arquivo C# chamado BancoDeDados.cs, e nele vamos implementar a seguinte lógica:
  • Criar a conexão;
  • Inserir dados;
  • Recuperar os dados inseridos.
Antes de começarmos, você vai precisar adicionar as seguintes linhas no início do arquivo:
using System.Data;
using Mono.Data.SqliteClient

Criando a conexão

Aqui vamos criar nosso arquivo que será o “data file” do banco e uma tabela com dois campos apenas para demonstração.
// caminho para o arquivo do banco
string urlDataBase = “URI=file:MasterSQLite.db
void Iniciar()
{
IDbConnection _connection = new SqliteConnection(urlDataBase);
IDbCommand _command = _connection .CreateCommand();
string sql;
_connection .Open();
// assim só criaremos a tabela uma vez
string sql = “CREATE TABLE IF NOT EXISTS highscores (name VARCHAR(20), score INT)”;
_command.CommandText = sql;
_command.ExecuteNonQuery();
}

Inserindo alguns dados

Agora vamos popular nossa tabela. Deixe a função como pública para podermos chamá-la por um botão de UI.
Repare que aqui não ha segredo, se você já está minimamente habituado com SQL.
public void Inserir()
{
string sql = “INSERT INTO highscores (name, score) VALUES (‘Me’, 3000)”;
_command.CommandText = sql;
_command.ExecuteNonQuery();
}

Recuperando os dados

E finalmente recuperamos o que acabamos de inserir. Esse método também deve ficar público para ser acessado pelo editor.
Note a diferença nos comandos de execução para gravar algumas coisas no banco usando o ExecuteNonQuery. Para recuperar, executamos o ExecuteReader que nos retorna um Reader que podemos “varrer” e obter os registros.
void Recuperar()
{
string sqlQuery = “SELECT value,name, randomSequence ” + “FROM PlaceSequence”;
dbcmd.CommandText = sqlQuery;
IDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
int value = reader.GetInt32(0);
string name = reader.GetString(1);
int rand = reader.GetInt32(2);
Debug.Log( “value= “+value+” name =”+name+” random =”+ rand);
}
}
Pronto galera. Agora vamos voltar ao editor do Unity3D e criar uma cena como a da imagem:
capturar-inserir-selecionar
Bastando adicionar as funções públicas aos eventos click dos botões.
Fico por aqui. Dúvidas e/ou sugestões pode ficar a vontade nos comentários.

Comentários

Postagens mais visitadas deste blog

Criando um jogo multiplayer no Unity 3D com Photon Unity Networking – Parte 01

Tutorial: Utilizando Atributos no Unity3D