Menu
CoddyTech

Établi de fabrication

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

Dans un jeu de survie, un établi transforme ce que tu ramasses en objets que tu peux utiliser. Deux boutons permettent de ramasser du bois et de la pierre, et trois recettes les transforment en objets supplémentaires : deux morceaux de bois donnent une planche, une planche et deux pierres donnent une hache, et quatre planches donnent un radeau. On ne peut appuyer sur le bouton d’une recette que si l’inventaire contient tout ce dont la recette a besoin, et fabriquer un objet consomme ces ressources. Les recettes sont des données renseignées sur l’établi dans l’Inspector : une nouvelle recette ne nécessite donc aucun nouveau code. L’inventaire annonce chaque changement à toute personne à l’écoute, et il est enregistré en JSON à chaque modification : quitter le jeu ne fait donc rien perdre.

Deux leçons permettent de le construire. Dans celle-ci, tu écris l’Inventory, sur le Backpack ; les recettes de l’établi viennent ensuite.

challenge icon

Défi

Difficile

Partie 1 : complète Inventory ; la collecte est prête.

  1. Ajoute ItemStack sérialisable (item et count publics) et InventoryData (List<ItemStack> stacks public).
  2. Complète Count, Add, Remove (une pile quitte l’inventaire lorsqu’elle atteint 0) et Describe : Wood 3, Plank 1 ou empty.
  3. Chaque modification enregistre inventory.json dans Application.persistentDataPath et déclenche Changed ; Awake le charge.

Appuie sur « Jouer », collecte des ressources, puis relance : le bois est de retour. Ensuite, appuie sur « Vérifier ».

Essayez vous-même

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

// ItemStack et InventoryData vont ici

public class Inventory : MonoBehaviour
{
    public event Action Changed;

    void Awake()
    {
        // Charger inventory.json s’il existe
    }

    public int Count(string item)
    {
        return 0;
    }

    public void Add(string item, int amount)
    {
    }

    public void Remove(string item, int amount)
    {
    }

    public string Describe()
    {
        return "empty";
    }
}

Toutes les leçons de Architecture de jeu dans Unity

Entraînez-vous par vous-même : Playground Unity