Не работает скрипт при нажатии на кнопку
У меня возникла проблема : у меня есть событие которое вызывается при нажатии на кнопку :
[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, помимо этого в префабе есть другие кнопки, которые работают иделаьно)
Хотя когда я его вешал на другую кнопку, которая находится на сцене, то переменные увеличивались.