É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.
Défi
DifficilePartie 1 : complète Inventory ; la collecte est prête.
- Ajoute
ItemStacksérialisable (itemetcountpublics) etInventoryData(List<ItemStack> stackspublic). - Complète
Count,Add,Remove(une pile quitte l’inventaire lorsqu’elle atteint 0) etDescribe:Wood 3, Plank 1ouempty. - Chaque modification enregistre
inventory.jsondansApplication.persistentDataPathet déclencheChanged;Awakele 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
1Des composants, pas des hiérarchies
De petits composantsUn script de base pour les ennemisComposants abstraitsDes composants qui fonctionnent ensembleRécapitulatif : tourelle modulaireRécapitulatif : canon double4Données sérialisées
Classes sérialisablesListes dans l’InspecteurÉnumérations dans l’InspecteurRécapitulatif : table de butinRécapitulatif : tirer le butin2Les interfaces dans Unity
IDamageableInterfaces et TryGetComponentGetComponentsRécapitulatif : touche d’interactionLe plus proche à portée5ScriptableObjects
Ressources de donnéesStatistiques des armesParamètres partagésSauver le ventLes vagues comme donnéesRécapitulatif : base de données des objetsRécapitulatif : acheter dans la boutique3Événements
Les événements C# dans UnityS’abonner dans OnEnableChamps UnityEventLes événements pilotent l’interfaceRécapitulatif : fenêtre de succèsRécapitulatif : minuteur de la fenêtreEntraînez-vous par vous-même : Playground Unity