К переменой PlayerPrefs прибавляется 1 и всё больше не прибавляется

Каждый раз когда игрок касается двери то к переменой PlayerPrefs прибавляется 1 и всё больше не прибавляется
Скрипт для тригера

using UnityEngine;

public class DoorTrigerScript : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Player")
        {
            PlayerPrefs.SetInt("LC", +1);
            Debug.Log(PlayerPrefs.GetInt("LC"));
        }
    }
}

Скрипт для кнопок с уровнями

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class SaveLevelCompliteScript : MonoBehaviour
{    //
     // Кнопки
     //
    public Button b2;
    public Button b3;
    public Button b4;
    public Button b5;
    public Button b6;
    public void Update()
    {
        if(PlayerPrefs.GetInt("LC") >= 1) b2.interactable = true; else b2.interactable = false;
        if(PlayerPrefs.GetInt("LC") >= 2) b3.interactable = true; else b3.interactable = false;
        if(PlayerPrefs.GetInt("LC") >= 3) b4.interactable = true; else b4.interactable = false;
        if(PlayerPrefs.GetInt("LC") >= 4) b5.interactable = true; else b5.interactable = false;
        if(PlayerPrefs.GetInt("LC") >= 5) b6.interactable = true; else b6.interactable = false;
    }
    public void btn1() { SceneManager.LoadScene("Level1"); }
    public void btn2() { SceneManager.LoadScene("Level2"); }
    public void btn3() { SceneManager.LoadScene("Level3"); }
    public void btn4() { SceneManager.LoadScene("Level4"); }
    public void btn5() { SceneManager.LoadScene("Level5"); }
}

Помогите пожалуйста

Вы не прибавляете, а просто ставите положительную единицу, результат такой же как если просто написать 1.
Если вам нужны сохранения а не разовая сессия, создайте переменную которая будет считывать ваш int при загрузке в себя и прибавляете уже к этому инт и присваиваете его в playerprefs при изменении.
Надеюсь идея понятна и без кода, так же можете скинуть столь тривиальную проблему ИИ, он сразу накидает варианты решения, тут думаю, справится даже самый тупой и бесплатный.
(claude и gemini, по опыту, лучшие в коде вышли)

(Так же это не bug а question, скорее. Не забудьте чтобы скрипт с int переменной не пропадал на следующей сцене или читал из PlayerPrefs там заново, можно создать ScriptableObject и т.д.)

По типу так?

using UnityEngine;

public class DoorTrigerScript : MonoBehaviour
{
    int ScanInt = 0;
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "Player")
        {
            ScanInt++;
            PlayerPrefs.SetInt("LC", ScanInt);
            Debug.Log(PlayerPrefs.GetInt("LC"));
        }
    }
}

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

1 Like

Это добавить?

private void Start()
{
    ScanInt = PlayerPrefs.GetInt("LC");
}