Menu
CoddyTech

Podsumowanie: tabela łupów

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 18 z 50.

challenge icon

Wyzwanie

Łatwy

Skrzynia ze skarbami upuszcza jeden przedmiot za każdym razem, gdy naciśniesz spację. Napisz LootChest.cs. Scena wypełnia tabelę łupów w Inspectorze, więc nazwy muszą się zgadzać:

  • Wyliczenie Rarity z wartościami Common, Rare, Epic i Legendary, w tej kolejności.
  • Klasa LootEntry, którą Inspector może wyświetlić, zawierająca string itemName, GameObject prefab i Rarity rarity, a na skrzyni publiczna List<LootEntry> o nazwie table. Tabela sceny zawiera Apple i Bread (Common), Silver Ring (Rare), Dragon Egg (Epic) oraz Golden Crown (Legendary), w tej kolejności.
  • public int WeightOf(Rarity rarity) zwraca wagę elementu na podstawie jego rzadkości: Common 10, Rare 4, Epic 2, Legendary 1. public int TotalWeight() sumuje wagi całej tabeli.
  • public LootEntry Pick(int roll), dla losowania od 0 do, ale bez uwzględnienia, TotalWeight(), przechodzi przez tabelę w kolejności, a każdy element obejmuje tyle losowań, ile wynosi jego waga: losowania od 0 do 9 dają Apple, od 10 do 19 Bread, od 20 do 23 Silver Ring i tak dalej.
  • Spacja losuje raz wartość z zakresu Random.Range(0, TotalWeight()), wybiera ten element, tworzy jego prefab 1.5 jednostki nad skrzynią i zapisuje jego rzadkość oraz nazwę, na przykład Rare: Silver Ring.

Naciśnij Play, otwórz skrzynię kilka razy, a następnie naciśnij Check.

Spróbuj swoich sił

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

Wszystkie lekcje w sekcji Architektura gier w Unity