Menu
CoddyTech

Повторение: покупка в магазине

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

В этой главе данные были перемещены в ресурсы, общие для многих объектов. Предметы магазина — это такие ресурсы, поэтому купленное игроком должно храниться в магазине, а не в самих предметах.

challenge icon

Задание

Легко

Пусть Space покупает выбранный предмет, не изменяя ассеты.

  1. Храни купленные предметы в List<ItemData> owned в Shop.
  2. При нажатии Space для уже купленного предмета выводи в журнал Already owned: Iron Sword; если предмет стоит больше, чем gold, выводи Not enough gold for Iron Sword.
  3. В противном случае вычти цену из gold, добавь предмет в owned, выведи в журнал Bought Iron Sword и обнови текст.

Нажми «Играть» и купи Long Bow. Затем нажми «Проверить».

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

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class Shop : MonoBehaviour
{
    public ItemDatabase database;
    public TMP_Text itemText;
    public TMP_Text goldText;
    public int gold = 50;
    private int index;

    void Start()
    {
        Show();
    }

    void Update()
    {
        if (Keyboard.current.rightArrowKey.wasPressedThisFrame)
        {
            index = (index + 1) % database.items.Count;
            Show();
        }
        if (Keyboard.current.leftArrowKey.wasPressedThisFrame)
        {
            index = (index - 1 + database.items.Count) % database.items.Count;
            Show();
        }
        // Space: купить выбранный предмет
    }

    void Show()
    {
        ItemData item = database.items[index];
        itemText.text = item.itemName + ": " + item.price + " gold";
        goldText.text = "Gold: " + gold;
    }
}
quiz iconПроверьте себя

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

Все уроки раздела Архитектура игр в Unity

Потренируйтесь самостоятельно: Песочница Unity