Создаем еще одну панель на канвасе, а на ней создаем image, добавляем на нее спрайт золота и дублируем image, перемещаем правее. Меняем спрайт. Далее создаем кнопку, ставим под image, на кнопке меняем текст на Buy, делаем так же для второго image.

На панели магазина создаем кнопку закрытия.

Открываем скрипт GameManager(который с урока про инвентарь), в нем добавляем несколько переменных.
- public string nameBuy - имя покупки
- public int summ - общая сумма монет персонажа
- public GameObject ButStore - панель магазина
- public Text textSum - объект текст в который выводим монеты
Теперь в старте пристраиваем количество монет. Выводим это в текст на сцене и скрываем панель магазина при старте.

Далее создаем функции для кнопок, в которых присваиваем имя покупки в зависимости от того, на какую кнопку нажали, и вызываем функцию BuyStore();

Далее создаем функцию BuyStore, делаем проверку на название покупки и монет.
Если два условия правда, то мы подгружаем нужный спрайт в инвентарь, вычитаем монеты у персонажа и выводим результат в текст.

Теперь создадим панель, которая будет появляться, когда у пользователя не будет хватать монет для покупки.

Объявляем еще одну панель.

И добавляем, что если условия не пройдены, то мы выводим панель.

В старте нам нужно также указать, что при запуске программы панель скрыта.

Возвращаемся в Юнити. На канвасе создаем кнопку, перемещаем в левый верхний угол и меняем текст на кнопке на Store. Еще на канвас добавим текст, в котором будет отображаться количество монет.

Возвращаемся в скрип. Нужно добавить функции открытия и закрытия панелей.

Сохраняем и переходим в Юнити. Так как скрипт у нас на персонаже, если вы делали с нуля проект, то переместите скрипт на персонажа. В нем нам нужно заполнить окна. Добавляем панели в нужное окно.
Теперь займемся кнопками. Кликаем на кнопку Store.
Добавляем событие, в окно перемещаем персонажа и выбираем функцию.

Кликаем на кнопку в панели магазина которая отвечает за покупку золота.
Добавляем событие, в окно перемещаем персонажа и выбираем функцию.

Также для кнопки меча, выбираем нужную функцию.
Кликаем на кнопку закрытия магазина. Создаем событие, перемещаем персонажа и выбираем функцию.

Кликаем на кнопку закрытия окна предупреждения. Создаем событие, перемещаем персонажа и выбираем функцию.

Запускаем и проверяем.
Полный скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
public Image[] inImages;
public Sprite[] spr;
public string nameBuy;
public int summ;
public GameObject ButStore,panelBox;
public Text textSum;
void Start()
{
summ = 150;
textSum.text = summ.ToString();
ButStore.SetActive(false);
panelBox.SetActive(false);
}
public void OpenStore()
{
ButStore.SetActive(true);
}
public void panelClose()
{
panelBox.SetActive(false);
}
public void CloseStore()
{
ButStore.SetActive(false);
}
public void BuyStoreGold()
{
nameBuy = "Gold";
BuyStore();
}
public void BuyStoreSword()
{
nameBuy = "Sword";
BuyStore();
}
public void BuyStore()
{
if (nameBuy == "Gold" && summ >= 100)
{
inImages[0].sprite = spr[0];
summ-=100;
}
else if (nameBuy == "Sword" && summ >= 100)
{
inImages[1].sprite = spr[1];
summ -= 100;
}
else
{
panelBox.SetActive(true);
}
textSum.text = summ.ToString();
}
}
Если вы хотите поглубже познакомиться с движком Unity, приходите на курс в школу "Пиксель"! Научим делать большие игры в Unity 2D и Unity 3D, будем писать скрипты на языке программирования C#. Для всех новичков есть бесплатное пробное занятие!