Menu
CoddyTech

Повторение: таблица лута

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 18 из 50.

challenge icon

Задание

Легко

Из сундука с сокровищами выпадает один предмет каждый раз, когда ты нажимаешь пробел. Напиши LootChest.cs. Сцена заполняет таблицу добычи в Inspector, поэтому названия должны совпадать:

  • Перечисление Rarity со значениями Common, Rare, Epic и Legendary именно в таком порядке.
  • Класс LootEntry, который Inspector может отображать, со строкой itemName, объектом GameObject prefab и значением Rarity rarity, а у сундука — публичный List<LootEntry> с именем table. В таблице сцены находятся Apple и Bread (Common), Silver Ring (Rare), Dragon Egg (Epic) и Golden Crown (Legendary), именно в таком порядке.
  • public int WeightOf(Rarity rarity) задаёт вес записи в зависимости от её редкости: Common — 10, Rare — 4, Epic — 2, Legendary — 1. public int TotalWeight() складывает веса всей таблицы.
  • public LootEntry Pick(int roll) для случайного значения от 0 до, но не включая, TotalWeight() проходит по таблице по порядку; каждой записи соответствует столько случайных значений, каков её вес: значения от 0 до 9 дают Apple, от 10 до 19 — Bread, от 20 до 23 — Silver Ring и так далее.
  • При нажатии пробела один раз генерируется случайное значение с помощью Random.Range(0, TotalWeight()), выбирается соответствующая запись, её prefab появляется на высоте 1.5 единицы над сундуком, а в журнал выводятся её редкость и название, например Rare: Silver Ring.

Нажми Play, несколько раз открой сундук, затем нажми Check.

Попробуйте сами

using System.Collections.Generic;
using UnityEngine;

public class LootChest : MonoBehaviour
{
}

Все уроки раздела Архитектура игр в Unity