Menu
CoddyTech

Riepilogo: tabella del bottino

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 18 di 50.

challenge icon

Sfida

Facile

Un forziere del tesoro lascia cadere un oggetto ogni volta che premi Space. Scrivi LootChest.cs. La scena riempie la tabella del bottino nell’Inspector, quindi i nomi devono corrispondere:

  • Un enum Rarity con Common, Rare, Epic e Legendary, in quest’ordine.
  • Una classe LootEntry che l’Inspector possa visualizzare, con una stringa itemName, un GameObject prefab e una Rarity rarity, e sul forziere una List<LootEntry> pubblica chiamata table. La tabella della scena contiene la Mela e il Pane (Common), l’Anello d’argento (Rare), l’Uovo di drago (Epic) e la Corona d’oro (Legendary), in quest’ordine.
  • public int WeightOf(Rarity rarity) assegna a una voce un peso in base alla sua rarità: Common 10, Rare 4, Epic 2, Legendary 1. public int TotalWeight() somma i pesi dell’intera tabella.
  • public LootEntry Pick(int roll), per un tiro da 0 fino a, ma senza includere, TotalWeight(), scorre la tabella in ordine, assegnando a ogni voce un numero di tiri pari al suo peso: i tiri da 0 a 9 danno la Mela, da 10 a 19 il Pane, da 20 a 23 l’Anello d’argento e così via.
  • Con Space viene generato una sola volta un tiro usando Random.Range(0, TotalWeight()), viene scelta la voce corrispondente, viene generato il suo prefab a 1.5 unità sopra il forziere e vengono registrati la sua rarità e il suo nome, come in Rare: Silver Ring.

Premi Play, apri il forziere qualche volta, poi premi Check.

Provalo tu

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

Tutte le lezioni di Architettura dei giochi in Unity