Повторение: база предметов
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 23 из 50.
Задание
СреднеВ кузнице продают товары из базы данных предметов, общей для всех магазинов в игре. Напиши два типа ресурсов и Shop:
ItemData(в ItemData.cs): ScriptableObject с пунктом в меню Create и общедоступными полямиitemName(строка) иprice(целое число).ItemDatabase(в ItemDatabase.cs): ScriptableObject с пунктом в меню Create и одним общедоступным полем —items, списком ItemData.- У
Shopесть общедоступное полеdatabaseтипа ItemDatabase. ВitemTextотображается выбранный предмет в форматеIron Sword: 30 gold, начиная с первого предмета, а вgoldTextотображается количество золота в форматеGold: 50. - Стрелка вправо выбирает следующий предмет, а после последнего снова первый; стрелка влево перемещает в обратную сторону — с первого предмета на последний.
- Пробел покупает выбранный предмет. Если игрок уже купил этот предмет, в журнал записывается
Already owned: Iron Sword. Если предмет стоит больше, чем есть золота, в журнал записываетсяNot enough gold for Iron Sword. В противном случае количество золота уменьшается на стоимость, предмет становится собственностью игрока, текстовые поля обновляются, а в Console выводитсяBought Iron Sword. - Храни покупки в Shop. Ресурсы остаются без изменений: база данных общая, а в редакторе изменения ресурса сохраняются после выхода из режима Play.
В проекте есть четыре ресурса ItemData (Iron Sword 30, Oak Shield 20, Healing Potion 10, Long Bow 45), ресурс Database, в котором они перечислены в этом порядке, и в Inspector ресурс Database назначен полю database объекта Shop. Нажми Play, сходи за покупками, затем нажми Check.
Попробуйте сами
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class Shop : MonoBehaviour
{
public TMP_Text itemText;
public TMP_Text goldText;
public int gold = 50;
// Здесь размещаются поле базы данных, переключение стрелками и покупка клавишей Space
}
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыСовместная работа компонентовПовторение: модульная турель4Сериализованные данные
Сериализуемые классыСписки в InspectorПеречисления в InspectorПовторение: таблица лута2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействия5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиВолны как данныеПовторение: база предметов