@WalloutDay

Unity ошибка IndexOutOfRangeException: Array index is out of range?

Выдаёт ошибку IndexOutOfRangeException: Array index is out of range.
Вот первый скрипт
using UnityEngine;
using System.Collections;

public class SpawnMarker : MonoBehaviour {

    GameObject[] enemy;
    public int length = 0;
    public int spawnLength = 0;
    public GameObject marker;

    public float[] posX;
    public float[] posY;

    void Update()
    {
        enemy = GameObject.FindGameObjectsWithTag("Enemy");
        length = enemy.Length;
        if (spawnLength < length)
        {
            Instantiate(marker, transform.position, transform.rotation);
            PlayerPrefs.SetInt("Markers", spawnLength + 1);
            spawnLength++;
        }
        for (int i = 1; i == length; i++)
        {
            posX[i] = enemy[i].transform.position.x;
            posY[i] = enemy[i].transform.position.y;
        }
    }
}


ошибка в
posX[i] = enemy[i].transform.position.x;

Вот второй скрипт
using UnityEngine;
using System.Collections;

public class Marker : MonoBehaviour {

    GameObject player;
    GameObject enemy;
    float PlayerX;
    float PlayerY;
    float MarkerRotate;
    public GameObject ParentMarker;
    public int numverEnemy;
    int i = 0;
    SpawnMarker SM;
    public float EnemyPosX;
    public float EnemyPosY;

    void Awake()
    {
        player = GameObject.FindGameObjectWithTag("Character");
        SM = player.GetComponent<SpawnMarker>();
    }
    
    void Start()
    {
        EN();
    }

    void Update()
    {
        PlayerX = player.transform.position.x;
        PlayerY = player.transform.position.y;
        MarkerRotate = ParentMarker.transform.rotation.z;
        if (i == 0)
        {
            ParentMarker.transform.rotation = Quaternion.Euler(0, 0, MarkerRotate * -1);
            i++;
        }
        ParentMarker.transform.position = new Vector2(PlayerX, PlayerY);

        EnemyPosX = SM.posX[numverEnemy];
        EnemyPosY = SM.posY[numverEnemy];
    }

    void EN()
    {
        numverEnemy = PlayerPrefs.GetInt("Markers");
    }
}


Помогите, в чем ошибка?
  • Вопрос задан
  • 1939 просмотров
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos Куратор тега Разработка игр
Размер массива posX и posY - не задан.
Итерирование по массиву enemy вообще какое то странное. Уверены что условие ==?
Ответ написан
Где инициализация public float[] posY;
posY = new float[....]

for (int i = 1; i == length; i++)
Это вообще что такое?
Если enemy.length = 1, то есть длина массива 1, то enemy[0] выдаст объект,а enemy[1] как раз то исключение.

Может быть
for (int i = 0; i < length; i++)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
PHYGITALISM Москва
от 70 000 до 130 000 руб.
Amigoweb Магнитогорск
от 40 000 до 70 000 руб.
ArtMind Technologies Москва
от 140 000 до 180 000 руб.