Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Index was outside the bounds of the array! Unity ошибка!

Guaeshe Ученик (176), открыт 3 недели назад
При программировании возникла эта ошибка
 using System.Collections; 
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Game : MonoBehaviour
{
[SerializeField] int Score;
public int[] CostInt;
private int ClickScore = 1;
public int[] CostBonus;

public GameObject ShopPan;
public GameObject BonusPan;

public Text[] CostText;
public Text ScoreText;

private void Start()
{
StartCoroutine(BonusShop());
}

public void OnClickButton()
{
Score += ClickScore;
}
private void Update()
{
ScoreText.text = Score + "$";
}
public void ShowAndHideShopPan()
{
ShopPan.SetActive(!ShopPan.activeSelf);
}
public void ShowAndHideBonusPan()
{
BonusPan.SetActive(!BonusPan.activeSelf);
}

public void OnClickBuyLevel()
{
if (Score >= CostInt[0])
{
Score -= CostInt[0];
CostInt[0] *= 2;
ClickScore *= 2;
CostText[0].text = CostInt[0] + "$";
}
}

public void OnClickBuyBonusShop()
{
if (Score >= CostInt[1])
{
Score -= CostInt[1];
CostInt[1] *= 2;
CostBonus[0] += 2;
CostText[1].text = CostInt[1] + "$";
}
}


IEnumerator BonusShop()
{
while (true)
{
Score += CostBonus[0];
yield return new WaitForSeconds(1);
}

}
}
Именно пишет: IndexOutOfRandeException: Index was outside the bounds of the array.
Game.OnClickBuyBonusShop () (at Assets/Scripts/Game.cs:54)
2 ответа
Ljar Просветленный (28823) 3 недели назад
инициализация массивов с нужными значениями
Sergio 2.1 Оракул (67256) 3 недели назад
Вам нужно правильно инициализировать массивы в инспекторе Unity или в коде:
 public class Game : MonoBehaviour  
{
[SerializeField] int Score;
public int[] CostInt = new int[2]; // Минимум 2 элемента
private int ClickScore = 1;
public int[] CostBonus = new int[1]; // Минимум 1 элемент

// ... остальной код
}
Либо инициализировать их в методе Start():
 private void Start()  
{
CostInt = new int[2] { 10, 20 }; // Примерные значения
CostBonus = new int[1] { 0 };
StartCoroutine(BonusShop());
}
GuaesheУченик (176) 3 недели назад
СПАСИБО БОЛЬШОЕ ЗАРАБОТАЛО! ВЕСЬ ДЕНЬ МУЧАЮСЬ!
Похожие вопросы