Menu
CoddyTech

Магазин и инвентарь

Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 54 из 56.

Между уровнями герой посещает магазин. На полке ждут три предмета: шлем, сапоги и плащ. На каждой кнопке указана цена, а кнопка «Работать» позволяет заработать монеты на те предметы, которые герой пока не может себе позволить. Купленные героем предметы попадают в инвентарь, указанный внизу, а оставшиеся монеты и приобретённые предметы сохраняются к следующему запуску игры.

Напиши два скрипта: Shop для объекта магазина и ShopItem для кнопки каждого предмета.

challenge icon

Задание

Сложно

Inspector задаёт для Shop значения startCoins (100), pay (25), coinsText, inventoryText, workButton и items — три ShopItem в порядке их расположения на полке. Для каждого ShopItem он задаёт itemName и price (Helmet 40, Boots 60, Cape 120), label (текст на кнопке) и shop.

  • Количество монет сохраняется под ключом Coins; игрок, у которого нет сохранённых данных, начинает с startCoins. coinsText отображает их в виде Coins: 100.
  • Каждое нажатие на Work приносит pay монет.
  • Предмет считается принадлежащим игроку, если значение по ключу Owned_ плюс его имя (Owned_Helmet) равно 1. Пока предмет продаётся, на его метке отображается Helmet: 40, а после покупки — Helmet: owned.
  • Кнопку предмета можно нажать, только если предмет ещё не принадлежит игроку и у игрока есть как минимум сумма, равная его цене. Нажатие на кнопку покупает предмет: его цена вычитается из количества монет, и предмет становится принадлежащим игроку.
  • inventoryText перечисляет принадлежащие игроку предметы в порядке их расположения на полке, например Inventory: Helmet, Cape, или отображает Inventory: empty.
  • Каждое изменение сразу сохраняется, а все тексты и кнопки отображают новое состояние.

Нажми Play, соверши покупки и поработай, нажми Stop, затем снова Play, а после этого — Check.

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

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class Shop : MonoBehaviour
{
    public int startCoins = 100;
    public int pay = 25;
    public TMP_Text coinsText;
    public TMP_Text inventoryText;
    public Button workButton;
    public ShopItem[] items;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Создание настоящих игр