Unity. Данные кнопки присваиваются всем кнопкам

Рейтинг: -1Ответов: 1Опубликовано: 05.02.2023

Скажу сразу, я только начинаю изучать юнити и C#, прошу не кидайтесь камнями) буду очень благодарна за любую помощь! Пишу игру в которой есть магазин скинов. На каждом скине есть три кнопки: купить, надеть, снять. Изначально активна только кнопка "купить", после покупки "снять" и тд. Сохраняются данные через PlayerPrefs. Столкнулась с проблемой, что после перезапуска или выхода на другую сцену и захода обратно, значение присваивается всем кнопкам(например купили первый скин и у него активна кнопка "снять", после перезахода у всех скинов активна кнопка "снять"). Нужно как-то перебирать скины и сохранять значение кнопки только для конкретного скина. Помогите пожалуйста с данной проблемой. Код прикладываю

public void Start()
{
    PlayerPrefs.SetInt("mint", 100);
    if (PlayerPrefs.GetInt("BuyButton") == 0)
    {
        BuyButton.SetActive(true);
        TakeOff.SetActive(false);
        Take.SetActive(false);
    }

    else if (PlayerPrefs.GetInt("BuyButton") == 1)
    {
        BuyButton.SetActive(false);
        if (PlayerPrefs.GetInt("TakeOff") == 1)
        {
            TakeOff.SetActive(false);
            Take.SetActive(true);
        }
        else
        {
            TakeOff.SetActive(true);
            Take.SetActive(false);
        }
    }
}

public void Buy()
{
    int mint = PlayerPrefs.GetInt("mint");
    if (mint >= Price)
    {
        PlayerPrefs.SetInt("mint", PlayerPrefs.GetInt("mint") - Price);
        TakeOff.SetActive(true);
        Take.SetActive(false);
        BuyButton.SetActive(false);
        PlayerPrefs.SetInt("BuyButton", 1);
    } 
}

public void TakeOFF()
{
    BuyButton.SetActive(false);
    TakeOff.SetActive(false);
    Take.SetActive(true);
    PlayerPrefs.SetInt("TakeOff", 1);
}

public void TAKE()
{
    BuyButton.SetActive(false);
    TakeOff.SetActive(true);
    Take.SetActive(false);
    PlayerPrefs.SetInt("TakeOff", 0);
}

Ответы

▲ 1

Вопрос решен. Если кому будет полезным - добавила массив скинов и в проверку и сохраняла данные таким образом : PlayerPrefs.GetInt(GetComponent().name + "TakeOff") == 1