• Как сделать сохранение в OnClick?

    @PopTop Автор вопроса
    Я сделал кнопки на которых повесил скрипт Buy, если на него кликнуть и если достаточно денег, то эта кнопка исчезает, только есть небольшая проблема, если это окно заранее открыто, то у меня все хорошо работает, при клике на кнопку она сразу исчезает и при перезаходе в игру все сохранено, но если это окно магазина скрыто и вызывается открытием, то при клике на него кнопки не исчезают, если в игру перезайти, то их уже нет на сцене, к ним применяется сохранение SetActive(false). Я пробовал метод старт воткнуть в OnEnable() и Awake() не помогло. В чем может быть дело? Скрипт висит на камере

    public class Buy : MonoBehaviour
    {
        public GameObject BuyButton1;
        public GameObject BuyButton2;
        int BuySkin1;
        int BuySkin2;
    
    
        private void OnEnable()
        {
            BuySkin1 = PlayerPrefs.GetInt("BuySkin1", 1);
            BuySkin2 = PlayerPrefs.GetInt("BuySkin2", 1);
        }
    
        void Update()
        {
            if (BuySkin1 == 1)
            {
                BuyButton1.SetActive(true);
            }
            else
            {
                BuyButton1.SetActive(false);
            }
    
            if (BuySkin2 == 1)
            {
                BuyButton2.SetActive(true);
            }
            else
            {
                BuyButton2.SetActive(false);
            }
        }
    
        public void BuySkins1()
        {
            if (CoinText.Coin >= 5)
            {
                CoinText.Coin -= 5;
                PlayerPrefs.SetInt("Coins", CoinText.Coin);
                BuySkin1 = 2;
                PlayerPrefs.SetInt("BuySkin1", BuySkin1);
            }
        }
    
        public void BuySkins2()
        {
            if (CoinText.Coin >= 10)
            {
                CoinText.Coin -= 10;
                PlayerPrefs.SetInt("Coins", CoinText.Coin);
                BuySkin2 = 2;
                PlayerPrefs.SetInt("BuySkin2", BuySkin2);
            }
        }
    }
    Ответ написан
    Комментировать
  • Как сделать прыжок в другую сторону на границе экрана?

    @PopTop Автор вопроса
    Мне подсказали, но все равно проблему не до конца решил, теперь при попадании на триггер у меня всегда прыгает вверх что при нажатии на A и D, в инспекторе тоже видно что ось х становится 0. Как исправить эту ситуацию? Надо чтобы в одну сторону игрок мог прыгать, а не только вверх
    void Start()
    {
    rb = GetComponent();
    }

    public Vector2 jumpVector = Vector2.one;

    private void OnTriggerEnter2D(Collider2D collision)
    {
    if (collision.CompareTag("JumpRightUp"))
    {
    jumpVector = Vector2.up;
    }
    }

    private void OnTriggerExit2D(Collider2D collision)
    {
    if (collision.CompareTag("JumpRightUp"))
    {
    jumpVector = Vector2.one;
    }
    }

    private void Update()
    {
    if ((Input.GetKeyDown(KeyCode.A)) && groundDetection.isGrounded)
    {
    rb.AddForce((new Vector2(-1, 1) * jumpVector) * force, mode: ForceMode2D.Impulse);
    }

    if ((Input.GetKeyDown(KeyCode.D)) && groundDetection.isGrounded)
    {
    rb.AddForce((new Vector2(1, 1) * jumpVector) * force, mode: ForceMode2D.Impulse);

    }
    }
    Ответ написан
    Комментировать