Захотелось попробовать сделать решение, которое позволит не писать отдельный код для каждого товара. По задумке, для создания нового товара должно быть достаточно работы в редакторе, а код можно не трогать.
Но, я бы это не писал, если бы код работал. А код не делает вообще ничего. В чём ошибся?
using System;
using UnityEngine;
using UnityEngine.UI;
public class Shop : MonoBehaviour
{
public GameObject storefront;//витрина
public Sprite[] numbers;//ссылки на img для рисованых чисел
public Button[] goods;//кнопки товаров
int[] goodsCounter;//счётчик для рисованых чисел
int coins = 0;
void Start()
{
if (PlayerPrefs.HasKey("Coins"))
coins = PlayerPrefs.GetInt("Coins");
//загружаем информацию по наличию продаваемых предметов
for (int i = 0; i < goods.Length; i++)
{
if (PlayerPrefs.HasKey(goods[i].name))
{
goodsCounter[i] = PlayerPrefs.GetInt(goods[i].name);
goods[i].transform.GetChild(0).transform.GetChild(0).GetComponent<Image>().sprite = numbers[goodsCounter[i]];
print(goodsCounter[i]);
}
else
{
goodsCounter[i] = 0;
PlayerPrefs.SetInt(goods[i].name, 0);
}
}
}
public void BuyTheItem(int index) //для покупки достаточно указать в редакторе номер товара
{
index--;
if (coins >= Convert.ToInt32(goods[index].transform.GetChild(1).GetComponent<Text>().text))
{
goodsCounter[index]++;
PlayerPrefs.SetInt(goods[index].name, goodsCounter[index]);
PlayerPrefs.SetInt("Coins", coins - Convert.ToInt32(goods[index].transform.GetChild(1).GetComponent<Text>().text));
goods[index].transform.GetChild(0).transform.GetChild(0).GetComponent<Image>().sprite = numbers[goodsCounter[index]];
}
}
}
P.S. И буду благодарен, если подскажете нормальный заголовок для этого вопроса ^^"