Повторение: таблица лута
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 18 из 50.
Задание
ЛегкоИз сундука с сокровищами выпадает один предмет каждый раз, когда ты нажимаешь пробел. Напиши LootChest.cs. Сцена заполняет таблицу добычи в Inspector, поэтому названия должны совпадать:
- Перечисление
Rarityсо значениямиCommon,Rare,EpicиLegendaryименно в таком порядке. - Класс
LootEntry, который Inspector может отображать, со строкойitemName, объектом GameObjectprefabи значением Rarityrarity, а у сундука — публичный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
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов