Riepilogo: tira il bottino
Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 22 di 64.
Questo capitolo ha inserito nell’Inspector le classi serializzabili, le liste e gli enum, e la tabella del forziere li usa tutti e tre. Ora il forziere effettua un tiro sulla tabella.
Sfida
FacileFai in modo che la barra spaziatrice apra il forziere e rilasci un oggetto in base al suo peso.
- Scrivi
public LootEntry Pick(int roll): scorritable; restituisci la voce quandorollè inferiore al suo peso, altrimenti sottrai il peso. Dopo il ciclo,return null;. - Quando premi la barra spaziatrice, scegli con
Random.Range(0, TotalWeight()), genera il suoprefab1.5 unità sopra il forziere e registraentry.rarity + ": " + entry.itemName.
Premi «Gioca» e la barra spaziatrice: per lo più Common: Apple o Bread. Poi premi «Verifica».
Provalo tu
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) e la logica per aprire il forziere con Space vanno qui
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Architettura dei giochi in Unity
1Componenti, non gerarchie
Componenti piccoliUno script base per i nemiciComponenti astrattiComponenti che collaboranoRipasso: torretta modulareRipasso: cannone doppio4Dati serializzati
Classi serializzabiliElenchi nell'InspectorEnum nell'InspectorRiepilogo: tabella del bottinoRiepilogo: tira il bottino2Interfacce in Unity
IDamageableInterfacce e TryGetComponentGetComponentsRiepilogo: tasto InteragisciRiepilogo: il più vicino a portata5ScriptableObjects
Asset di datiStatistiche delle armiImpostazioni condiviseSalva il ventoOnde come datiRiepilogo: database degli oggettiRiepilogo: comprare dal negozioEsercitati da solo: Playground Unity