Unity, проблема с монетками

проблема в том что сколько бы я не ставил MoneyText.Coin += 2; хоть 10, хоть 20 в счётчик добавляется 1

//скрипт счётчика

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MoneyText : MonoBehaviour
{
    public static int Coin;
    public Text text;
    public bool isMulti = false;
    void Start()
    {
        text = GetComponent<Text>();
        Coin = PlayerPrefs.GetInt("coins", Coin);
    }

    // Update is called once per frame
    void Update()
    {
        text.text = Coin.ToString();
    }
    public void BuyMulti()
    {
        if (Coin >= 10 && isMulti == false)
        {
            isMulti = true;
            Coin -= 10;
            PlayerPrefs.SetInt("coins", Coin);
            PlayerPrefs.SetInt("isMulti", isMulti ? 1 : 0);
        }
    }
}
//скрипт сбора монет
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Coins : MonoBehaviour
{
    public bool isMulti;
    // Start is called before the first frame update
    public void Start()
    {
        isMulti = PlayerPrefs.GetInt("isMulti") == 1 ? true : false;
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.CompareTag("Player"))
        {
            MoneyText.Coin += 2;
            PlayerPrefs.SetInt("coins", MoneyText.Coin);
            Destroy(gameObject);
        }
    }
}

на IsMulti не смотрите это надо в дальнейшем

:thinking: Отладочная печать обычно помогает понять причину в таких случаях.
Debug.Log в юнити

Это лишнее, a == b и так bool.

Если честно, нечего не понял

см. первую ссылку.

Второй полезный подход — добавить в программу вывод на экран промежуточных значений переменных в ключевых местах программы. Тут надо суметь понять, что такое «ключевые места» и какие переменные выводить. Обычно, например, если у вас в программе есть какие-то циклы, то полезно добавить вывод как минимум в конце каждой итерации, и выводить те переменные, которые меняются в цикле, в том числе для циклов for — переменную цикла. Если у вас сложная конструкция из if’ов, то добавить вывод внутрь каждого if’а, чтобы видеть, в какой именно if зашла программа. Если у вас несколько функций или тем более рекурсия, то добавить отладочный вывод типа «вошли в такую-то функцию» (зачастую с указанием параметров функции) и «вышли из такой-то функции». Если у вас просто сложные вычисления, длинная формула или несколько формул — то добавить вывод промежуточных результатов вычислений; возможно, для этого придется длинную формулу разбить на части (и это заодно сделает ее понятнее).

После этого запускаете программу на том тесте, на котором она не работает, смотрите на отладочный вывод, проверяете все значения и находите первое значение, которое неверно. Таким образом вы довольно хорошо локализуете проблему, вы будете знать, что ошибка, например, в вычислении той или иной переменной. Дальше уже действуйте по ситуации: если программа не очень сложная, то эта переменная меняется в одном-двух местах, и вы сразу можете посмотреть, как она считается и почему значение получается неправильным. Тем более что вы, наверное, вывели на экран не только значение этой переменной, но и значения других переменных, от которых она зависит, поэтому сразу можете подставить эти значения в формулу и проверить.

Если же программа более сложная, эта переменная меняется в нескольких местах, или вы вывели на экран недостаточно информации, чтобы легко расследовать проблему, то добавьте еще отладочного вывода, чтобы более подробно видеть, откуда взялось это значение. И повторите.

Может быть и другая причина проблемы — не неправильное значение переменной, а, например, заход не в тот if или слишком раннее или слишком позднее окончание цикла, и т.д. Но в любом случае, как только вы добавили отладочный вывод, вы стали намного лучше понимать, что происходит в программе, и вам будет намного легче найти ошибку.

Добавить вывод всех важных переменных в разных местах (при всех изменениях значения, …), смотреть и анализировать вывод на вкладке консоли.

Типа такого:

        if(collision.CompareTag("Player"))
        {
            MoneyText.Coin += 2;
+           Debug.Log("Collision! Coins: " + MoneyText.Coin);
        Coin = PlayerPrefs.GetInt("coins", Coin);

+       Debug.Log("Read coins from prefs. " + Coin);
    }
    public void BuyMulti()
    {
        if (Coin >= 10 && isMulti == false)
        {
            isMulti = true;
            Coin -= 10;
+           Debug.Log("BuyMulti. Coins: " + Coin);

Спасибо, вопрос решён