Магазин и инвентарь
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 54 из 56.
Между уровнями герой посещает магазин. На полке ждут три предмета: шлем, сапоги и плащ. На каждой кнопке указана цена, а кнопка «Работать» позволяет заработать монеты на те предметы, которые герой пока не может себе позволить. Купленные героем предметы попадают в инвентарь, указанный внизу, а оставшиеся монеты и приобретённые предметы сохраняются к следующему запуску игры.
Напиши два скрипта: Shop для объекта магазина и ShopItem для кнопки каждого предмета.
Задание
Сложно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;
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке