Menu
CoddyTech

Récapitulatif : base de données d’objets

Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 23 sur 50.

challenge icon

Défi

Moyen

La boutique du forgeron vend des articles provenant d’une base de données que toutes les boutiques du jeu partageront. Écrivez les deux types d’assets et le Shop :

  • ItemData (dans ItemData.cs) : un ScriptableObject avec une entrée de menu Create et les champs publics itemName (une chaîne) et price (un entier).
  • ItemDatabase (dans ItemDatabase.cs) : un ScriptableObject avec une entrée de menu Create et un seul champ public, items, une liste de ItemData.
  • Shop possède un champ public database de type ItemDatabase. itemText affiche l’article sélectionné sous la forme Iron Sword: 30 gold, en commençant par le premier article, et goldText affiche l’or sous la forme Gold: 50.
  • La flèche droite sélectionne l’article suivant, puis revient au premier après le dernier ; la flèche gauche fait l’inverse, du premier article au dernier.
  • La barre d’espace achète l’article sélectionné. Si le joueur a déjà acheté un article, le message Already owned: Iron Sword est consigné. Si un article coûte plus cher que la quantité d’or disponible, le message Not enough gold for Iron Sword est consigné. Sinon, la quantité d’or diminue du prix, l’article est ajouté aux articles possédés, les textes sont mis à jour et la Console affiche Bought Iron Sword.
  • Conservez dans Shop les articles achetés. Les assets restent tels quels : la base de données est partagée et, dans l’Éditeur, les modifications apportées à un asset persistent après le mode Play.

Le projet contient quatre assets ItemData (Iron Sword 30, Oak Shield 20, Healing Potion 10, Long Bow 45), un asset Database qui les répertorie dans cet ordre, et l’Inspecteur place le Database dans le champ database de Shop. Appuyez sur Play, faites vos achats, puis cliquez sur Check.

Essayez vous-même

using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class Shop : MonoBehaviour
{
    public TMP_Text itemText;
    public TMP_Text goldText;
    public int gold = 50;

    // Le champ de la base de données, la navigation avec les flèches et l’achat avec Space se trouvent ici
}

Toutes les leçons de Architecture de jeu dans Unity