«

»

août 06

Imprimer ceci Article

Utiliser SQLite avec Unity

Quel que soit le type d’application à développer avec Unity, la question de la gestion de la persistance des données va se poser tôt ou tard.

Dans de nombreux cas, l’utilisation d’un système de fichier associé à la gestion des préférences utilisateur peut s’avérer suffisant. Toutefois, sur des projets assez complexes dans lesquels la demande fonctionnelle implique une manipulation importante de données, l’utilisation d’une base de données peut présenter quelques atouts intéressants.

Je vous propose dans cet article un tuto très simple dans lequel nous allons apprendre à créer et configurer une base de données SQLite avec Unity.

Pré-requis

Cet outil est très utile pour administrer simplement une base de données. Nous sommes bien sur loin d’un outil avancé, mais il convient parfaitement à SQLite.

SQLiteBrowser

 

Préparation du projet Unity

Pour cet exemple, nous n’avons pas besoin des composants habituels. Depuis le menu File, choisissez l’entrée New Project…

Si comme moi vous préférez utiliser Visual Studio comme IDE, n’oubliez pas de cocher le composant Visual Studio 20XX Tools.unitypackage, comme illustré ci-dessous (ce n’est pas nécessaire si vous utilisez MonoDevelop.

Art02_03

Notice

Note: si vous ne savez pas où trouver le composant pour Visual Studio, lisez-ce post.

Afin de gagner en clarté, dans l’onglet Project nous créons les dossiers suivants :

  • DB : nous placerons la base de données à cet endroit
  • Plugins : ce dossier contiendra les DLL utiles au projet
  • Scripts : nous placerons dans ce dossier les scripts C#
  • Scenes : nous utiliserons ce dossier pour la scène principale

L’onglet Hierarchy devrait alors ressembler à ceci :

Art02_04

A l’aide du menu File, sélectionnez l’entrée New Scene et sauvegardez-la dans le dossier Scenes préalablement créé.

 

Récupération des librairies nécessaires

Nous allons avoir besoin de trois DLL. Ces dernières se trouvent dans le dossier d’installation de Unity.

Les deux premières :

  • System.Data.dll
  •  Mono.Data.Sqlite.dll

Ces fichiers se trouvent dans le dossier suivant :

<Votre Dossier d’installation de Unity>\Data\Mono\lib\mono\2.0

La dernière :

  • sqlite3.dll

Ce fichier se trouve à la racine du dossier d’installation

Copiez ces fichier directement dans le dossier Plugins que nous avons créé.

 

Création de la base de données

Avec l’outil SQLite Browser, créez la base de données à l’aide du bouton New Database et nommez la SampleDB.

Lors de la création, sélectionnez le dossier DB que nous avons créé auparavant dans l’onglet Project. Le chemin se trouve dans le dossier du projet, qui revêt la forme suivante :

<Votre emplacement Projet>\DemoSQLLite\Assets\DB

Dans l’onglet Database Structure, créez une table à l’aide du bouton Create Table et nommez-la Customer.

Nous allons créer deux champs de type différent pour illustrer l’exemple :

  • ID : l’identifiant du Customer. Ce champ est obligatoire, c’est une clef primaire de type INTEGER qui s’auto incrémente.
  • UserName : le nom d’utilisateur du Customer. Ce champ est de type TEXT et il est obligatoire.

Art02_05

Ajoutez à présent quelques données de test depuis de l’onglet Browse Data, à l’aide du bouton New Record.

Art02_06

Les Scripts Unity

Nous allons créer ici quelques classes qui pourront être utilisées dans d’autres projets. Il s’agit bien sur d’un embryon de couche d’accès aux données, mais il est possible de le développer selon les besoins fonctionnels.

Globalement, voici le modèle que nous allons utiliser :

Art02_07

Voici les explications concernant ces entités (Le code viendra ensuite).

  • CustomerEntity : il s’agit du mapping de la table Customer. Il est réalisé manuellement car il n’est pas possible d’utiliser un ORM comme LinqToSQL ou LinqToEntity. Cette Classe est le modèle objet relatif à la table présente dans la base. Les champs de la base sont devenus des propriétés.
    Afin de garder la cohérence avec la base de données, nous avons déclarer le constructeur sans paramètre en privé. En effet, La base impose un ID et un UserName obligatoire. Nous avons donc créé un constructeur qui respecte cet état et qui lui est public (vous le verrez dans le code).
  • DBHelper : c’est la classe de base destinée à gérer les connexions à la base de données. Une méthode CheckConnection a été ajoutée afin de laisser la possibilité à l’utilisateur de vérifier sa connexion. Une connexion embarquée a été ajoutée mais un autre constructeur de cette classe permet bien sur d’en utiliser une autre.
  • ConnectionResult : il s’agit d’une simple classe utilisée par la méthode CheckConnection de la classe DBHelper, afin de faciliter le debugage.
  • CustomerEntityHelper : cette classe est destinée à fournir les informations de la base relative aux entités CustomerEntity. Elle hérite de DBHelper et se spécialise dans le rtaitement des résultats liées à la table Customer. elle possède une méthode GetAllCustomers qui renvoie une collection typée de CustomerEntity (CustomerEntity  ne pouvant être explicitement liée aux accès aux données de la base).

Notice

 Ces scripts n’héritent pas de MonoBehavior. En effet, il s’agit de scripts fonctionnel métier qui n’ont aucun intérêt à cet héritage, ces dernier pouvant d’ailleurs faire partie d’une librairie à part du projet Unity.

Voici le code de ces classes.

CustomerEntity.cs

 DBHelper.cs

CustomerEntityHelper.cs

ConnectionResult.cs

Enfin, passons au script qui va être utilisé sur un GameObject. Ce script est destiné à créer un UI des plus succincte afin de tester les accès à la base et les communications. Il hérite donc de MonoBehavior.

SampleDB.cs

Notice

Enregistrez ces scripts dans le dossier Scripts prévu à cet effet (dans l’onglet Project).

Affichage du résultat

Depuis le menu GameObject, créez un GameObject dans la scène principale en utilisant l’entrée Create Empty. Ce GameObject est destiné à accueillir le script SampleDB. Nommez le SampleDBGameObject.

Affectez le script SampleDB.cs (dans le dossier Scripts de l’onglet Hierarchy) au GameObject SampleDBGameObject présent dans l’onglet Hierarchy.

Un clic sur le bouton “Check Connection” vérifie la connexion à la base et affiche le bouton de récupération

Après exécution voici ce que vous devez obtenir.

Art02_08

 

Avec cette structure nous avons veillé à bien séparer les couches (données, métier et affichage). Dans un prochain article sur ce sujet je développerai plus en profondeur les différentes actions liées à la base SQLite et à son utilisation avec Unity.

 

Lien Permanent pour cet article : http://sdotechnologies.com/utiliser-sqlite-avec-unity/

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">