Не работает скрипт при нажатии на кнопку

У меня возникла проблема : у меня есть событие которое вызывается при нажатии на кнопку :

[SerializeField] private Button _sellButton;

public event UnityAction<OtherBand> SellButtonClick;

private void OnEnable()
{
    _sellButton.onClick.AddListener(OnSellButtonClicked);
}

private void OnDisable()
{
    _sellButton.onClick.RemoveListener(OnSellButtonClicked);
}

private void OnSellButtonClicked()
{
    SellButtonClick?.Invoke(this);
}

Подписка на событие идет в другом скрипте

using System.Collections.Generic;
using UnityEngine;

public class SellWeaponsManager : MonoBehaviour
{
    [SerializeField] private List<OtherBand> _firstGroupWithBands;
    [SerializeField] private List<OtherBand> _secondGroupWithBands;
    [SerializeField] private List<OtherBand> _thirdGroupWithBand;

    [SerializeField] private List<Weapon> _weapons;
    [SerializeField] private List<Transform> _points;
    [SerializeField] private ValuesInStatistic _statistic;
    [SerializeField] private RenderStatistic _renderStatistic;

    private void Awake()
    {
        SetWeaponForBands(_firstGroupWithBands);
        SetWeaponForBands(_secondGroupWithBands);
        SetWeaponForBands(_thirdGroupWithBand);

    }


    private void SetWeaponForBands(List<OtherBand> bands)
    {
        for (int i = 0; i < bands.Count; i++)
        {
            bands[i].SetWeapon(_weapons);
        }
    }
    private void Start()
    {
        RenderShop();
    }


    private void RenderShop()
    {
        int randomGroup = Random.Range(1, 3);
        switch(randomGroup)
        {
            case 1:
                RenderGroups(_firstGroupWithBands, _secondGroupWithBands, _thirdGroupWithBand);
                break;
            case 2:
                RenderGroups(_thirdGroupWithBand, _firstGroupWithBands, _secondGroupWithBands);
                break;
            case 3:
                RenderGroups(_secondGroupWithBands, _thirdGroupWithBand, _firstGroupWithBands);
                break;
        }
    }

    private void RenderGroups(List<OtherBand> bandOne , List<OtherBand> bandTwo, List<OtherBand> bandThree)
    {
        AddBand(bandOne[Random.Range(0, _firstGroupWithBands.Count)], _points[0]);
        AddBand(bandTwo[Random.Range(0, _secondGroupWithBands.Count)], _points[1]);
        AddBand(bandThree[Random.Range(0, _thirdGroupWithBand.Count)], _points[2]);
    }

    private void AddBand(OtherBand band, Transform point)
    {
        Instantiate(band, point);
        band.SellButtonClick += OnSellButtonClick;
        band.RenderBand();
    }


    private void OnSellButtonClick(OtherBand band)
    {
        TrySelllButtonClick(band);
    }

    private void TrySelllButtonClick(OtherBand band)
    {
        switch(band.Weapon.Name)
        {
            case "Rifle":
                CheckChanceToRob(band, _statistic.SelledSniper, _statistic.CountOfSniper, Random.Range(2,3));
                break;
            case "BH17":
                CheckChanceToRob(band, _statistic.SelledPPsh, _statistic.CountOfPPsh, Random.Range(2, 3));
                break;
            case "Ai-50":
                CheckChanceToRob(band, _statistic.SelledAk47, _statistic.CountOfAk47, 3);
                break;
            case "Fury-1":
                CheckChanceToRob(band, _statistic.SelledTomson, _statistic.CountOfTomson, Random.Range(3, 4));
                break;
            case "Ai-12":
                CheckChanceToRob(band, _statistic.SelledAkSY, _statistic.CountOfAKSY, 4);
                break;
        }
    }

    private void CheckChanceToRob(OtherBand band, int sellWeapon, int countOfweapons,int index)
    {
        if(band.ChanceToRob % index ==0)
        {
            if(band.CountOfWeapons <= countOfweapons)
            {
                _statistic.Money += band.CountOfWeapons * band.Weapon.Course;
                _statistic.SuccessContracts++;
                sellWeapon += band.CountOfWeapons;
                countOfweapons -= band.CountOfWeapons;
            }
            band.SellButtonClick -= OnSellButtonClick;
        }
        else
        {
            _statistic.FailContracts++;
            _statistic.Money -= band.CountOfWeapons * band.Weapon.Course;
            _statistic.DeadGangstersInContracts += band.GangstersToRoad;
            band.SellButtonClick -= OnSellButtonClick;
        }
    }

}

В этом скрипте есть массивы префабов, которые рандомно появляются в 3 точках на сцене в канвасе, в этих префабах есть кнопка, где при нажатии на нее некоторые переменные из _statistic должны увеличиваться, но это не работает при запуске программы (префаб банды появляется в точке Transform в Canvas, помимо этого в префабе есть другие кнопки, которые работают иделаьно)

Хотя когда я его вешал на другую кнопку, которая находится на сцене, то переменные увеличивались.


Ответы (0 шт):