Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Fai in modo che la barra spaziatrice apra il forziere e rilasci un oggetto in base al suo peso.

  1. Scrivi public LootEntry Pick(int roll): scorri table; restituisci la voce quando roll è inferiore al suo peso, altrimenti sottrai il peso. Dopo il ciclo, return null;.
  2. Quando premi la barra spaziatrice, scegli con Random.Range(0, TotalWeight()), genera il suo prefab 1.5 unità sopra il forziere e registra entry.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
}
quiz iconMettiti alla prova

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

Esercitati da solo: Playground Unity