У меня есть prefabs, названный с 0, 1 ... 9
.Индекс массива выходит за пределы диапазона?
Я хочу создать цифры с rigidbody
и collision
. Однако я получаю исключение ниже:
IndexOutOfRangeException: Индекс массива выходит за пределы допустимого диапазона. (обертка stelemref) объект: stelemref (объект, IntPtr, объект) Spawn_Score.Start() (на активы/Spawn_Score.cs: 17)
Код:
using UnityEngine;
using System.Collections;
public class Spawn_Score : MonoBehaviour {
private Vector3 startPosition;
private Quaternion startRotation;
public GameObject[] number_object;
public int position;
public int count;
// Use this for initialization
void Start() {
for (int i = 0; i < 9; i++) {
number_object [i] = (GameObject)Resources.Load (i.ToString());
}
GenerateScore();
}
// Update is called once per frame
void Update() {
}
void GenerateScore() {
startRotation = transform.rotation;
count = PlayerPrefs.GetInt ("PlayerScore").ToString().Length;
for (int i = 1; i < count; i++) {
//int number;
startPosition = new Vector3 (2f*i, 5.6f, 0);
//number = (int)PlayerPrefs.GetInt("PlayerScore").ToString()[i];
Instantiate (number_object[1], startPosition, startRotation);
}
}
}
Вы не показали нам, где инициализируется 'номер_объекта'. (Вы показали нам, где массив заполнен, но не там, где вы фактически инициализируете переменную.) –
Это все, что у меня есть. Разве номер_объекта не инициализирован в верхней части страницы? Если я прав. – Epz
Нет, это * объявлено * в начале кода, но оно будет иметь значение по умолчанию «null». Поэтому что-то должно быть инициализировано, иначе вы получите «NullReferenceException». Вполне возможно, что какая-то волшебная часть Unity инициализирует его автоматически, но я не вижу, как он будет знать, как большой размер массива. –