#unity3d
#unity3d
Вопрос:
Я создаю несколько сборных экземпляров и мне нужно задать пути. Длина узлов пути составляет от 1 до 3 секций.
public GameObject mb;
void Start()
{
GameObject planeIcon;
foreach (PlaneData p in PlaneManager.planesData)
{
if(p.route != 0)
{
planeIcon = Instantiate(iconPrefab);
planeIcon.GetComponent<Image>().sprite = Resources.Load<Sprite>(p.planeFilename "_icon");
planeIcon.name = p.planeName;
planeIcon.GetComponent<AnimatePlane>().moveSpeed = p.planeSpeed;
planeIcon.GetComponent<AnimatePlane>().range = p.planeRange;
planeIcon.GetComponent<AnimatePlane>().pathNode[0] = mb;
}
это вызывает исключение IndexOutOfRangeException: индекс был за пределами массива в последней строке
Код AnimatePlane прикреплен к сборке, экземпляр которой создан выше
public class AnimatePlane : MonoBehaviour
{
public GameObject[] pathNode = new GameObject[3];
public float moveSpeed;
public int range;
// Use this for initialization
void Start()
{
Debug.Log("pathnode length: " pathNode.Length);
CheckNode();
}
Вывод отладки — показать длину путевого узла = 0
Я предполагаю, что мне нужно каким-то образом инициализировать массив в коде AnimatePlane, но не могу понять, чего мне не хватает.
Спасибо
Ответ №1:
Привет, попробуй это.
public GameObject mb;
void Start()
{
GameObject planeIcon;
foreach (PlaneData p in PlaneManager.planesData)
{
if(p.route != 0)
{
planeIcon = Instantiate(iconPrefab);
planeIcon.GetComponent<Image>().sprite = Resources.Load<Sprite>(p.planeFilename "_icon");
planeIcon.name = p.planeName;
AnimatePlane plane = planetIcon.GetComponent<AnimatePlane>();
plane.moveSpeed = p.planeSpeed;
plane.range = p.planeRange;
plane.pathNode = new GameObject[3];
plane.pathNode[0] = mb;
}
Ответ №2:
При этом «public GameObject[] pathNode = new GameObject[3];» путь к объекту перезаписывается нулевым значением. Вам не нужно создавать общедоступные игровые объекты. Вы можете установить размер в инспекторе Unity и добавить туда объекты.
Комментарии:
1. Я не могу добавлять объекты через инспектор, поскольку это сборный файл, для которого при создании экземпляра требуется набор переменных. Спасибо за предложение, хотя.