Убедитесь, что массивы инициализированы правильным размером:
public int[] CostInt = new int[2]; // Минимум 2 элемента
public int[] CostBonus = new int[1]; // Минимум 1 элемент
public Text[] CostText = new Text[2]; // Минимум 2 элемента
Исправьте опечатку в методе OnClickBuyBonusShop:
public void OnClickBuyBonusShop()
{
if (Score >= CostInt[1])
{
Score -= CostInt[1];
CostInt[1] *= 2;
CostBonus[0] += 2;
CostText[1].text = CostInt[1] + "$"; // Было CostInt[0], исправлено на CostInt[1]
}
}
Добавьте проверки на null и валидность индексов:
private void Start()
{
// Проверка инициализации массивов
if (CostInt == null || CostInt.Length < 2 ||
CostBonus == null || CostBonus.Length < 1 ||
CostText == null || CostText.Length < 2)
{
Debug.LogError("Arrays not properly initialized!");
return;
}
StartCoroutine(BonusShop());
}