Menu
CoddyTech

Повторение: база предметов

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

challenge icon

Задание

Средне

В кузнице продают товары из базы данных предметов, общей для всех магазинов в игре. Напиши два типа ресурсов и 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