@Evil17

Ошибка IndexOutOfRangeException: Array index is out of range, что делать?

Доброго времени суток.
Решился написать свой первый проект в программе unity v5.
Написал по гайду, но вылазит ошибка IndexOutOfRangeException: Array index is out of range.Game.Shopbttn_addBonus (Int32 index) (at Assets/Scripts/Game.cs:27)
Вот скрипт:
spoiler

using System.Reflection;
using UnityEngine;
using UnityEngine.UI;

public class Game : MonoBehaviour
{
    public Text ScoreText;
    private int Score;
    private int Bonus = 1;
    [Header("Магазин")]
    public int[] ShopCosts;
    public int[] ShopBonuses;
    public Text[] ShopBttnsText;
    public GameObject Shop;

    private void Update()
    {
        ScoreText.text = Score + "$";
    }

    public void Shop_()
    {
        Shop.SetActive(!Shop.activeSelf);
    }
    public void Shopbttn_addBonus(int index)
    {
        if (Score >= ShopCosts[index])
        {
            Bonus += ShopBonuses[index];
            Score -= ShopCosts[index];
            ShopCosts[index] *= 2;
            ShopBttnsText[index].text = "КУПИТЬ УЛУЧШЕНИЕ \n" + ShopCosts[index] + "$";
        }
        else
        {
            Debug.Log("Не хватает!");
        }
    }


    public void OnClick ()
    {
        Score += Bonus; 
    }

}


Напишите желательно сразу решение с пояснением, так как я нечего не понимаю.
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
@yuopi
C# developer
public void Shopbttn_addBonus (int index) {
        try {
            if (Score >= ShopCosts[index]) {
                Bonus += ShopBonuses[index];
                Score -= ShopCosts[index];
                ShopCosts[index] *= 2;
                ShopBttnsText[index].text = "КУПИТЬ УЛУЧШЕНИЕ \n" + ShopCosts[index] + "$";
            } else {
                Debug.Log ("Не хватает!");
            }
        } catch (Exception e) {
            Debug.Log ($"Неверный индекс кнопки. Был передан индекс {index}, " + 
            "валидные числа индекса для массива: " + 
            $"ShopCosts - от 0 до {ShopCosts.Count - 1}" +
            $"ShopBonuses - от 0 до {ShopBonuses.Count - 1}" +
            $"ShopBttnsText - от 0 до {ShopBttnsText.Count - 1}");
        }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы