Artemonim
@Artemonim

Почему мои кнопки не работают?

Захотелось попробовать сделать решение, которое позволит не писать отдельный код для каждого товара. По задумке, для создания нового товара должно быть достаточно работы в редакторе, а код можно не трогать.

Но, я бы это не писал, если бы код работал. А код не делает вообще ничего. В чём ошибся?
Скриншот редактора
5ea950d6e4c05667750753.png

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]];
        }
    }
}

OnClick()
5ea950fa284f8801748572.png

P.S. И буду благодарен, если подскажете нормальный заголовок для этого вопроса ^^"
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
Artemonim
@Artemonim Автор вопроса
Проблема в том, что я забыл как работать с динамическими массивами. Unity ругался, что проблема в NullPointer, а я забыл проверить консоль.
Вывел консоль на видное место, а исправление int[] на List решило проблему
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы