Récapitulatif : tirer le butin
Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 22 sur 64.
Ce chapitre a placé des classes sérialisables, des listes et des énumérations dans l’Inspector, et le tableau du coffre utilise les trois. Maintenant, le coffre effectue un tirage à partir de celui-ci.
Défi
FacileFais en sorte que la touche Espace ouvre le coffre et fasse apparaître un objet selon son poids.
- Écris
public LootEntry Pick(int roll): parcourstable; renvoie l’entrée lorsquerollest inférieur à son poids, sinon soustrais le poids. Après la boucle,return null;. - À l’appui sur Espace, effectue un tirage avec
Random.Range(0, TotalWeight()), fais apparaître sonprefabà 1.5 unité au-dessus du coffre et afficheentry.rarity + ": " + entry.itemNamedans le journal.
Appuie sur « Jouer » puis sur Espace : tu obtiendras le plus souvent Common: Apple ou Bread. Puis clique sur « Vérifier ».
Essayez vous-même
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public enum Rarity { Common, Rare, Epic, Legendary }
[System.Serializable]
public class LootEntry
{
public string itemName;
public GameObject prefab;
public Rarity rarity;
}
public class LootChest : MonoBehaviour
{
public List<LootEntry> table;
public int WeightOf(Rarity rarity)
{
switch (rarity)
{
case Rarity.Common: return 10;
case Rarity.Rare: return 4;
case Rarity.Epic: return 2;
case Rarity.Legendary: return 1;
}
return 0;
}
public int TotalWeight()
{
int total = 0;
foreach (LootEntry entry in table) total += WeightOf(entry.rarity);
return total;
}
// Pick(int roll) et l’ouverture du coffre avec Space vont ici
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
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