NullReferenceException: Object reference not set to an instance of an object с Юнити и C#

389
24 января 2017, 20:55

Код:
using UnityEngine; using System.Collections;

public class Points : MonoBehaviour {
    public Vector3[] point;
    private Vector3[] real_point;
    public GameObject point_object;
    private GameObject[] point_object_inst;
    void Start () {
        Vector3[] real_point = new Vector3[point.Length];
        GameObject[] point_object_inst = new GameObject[point.Length];
        for (int i = 0; i <point.Length; i++)
        {
            real_point[i].z = -point[i].x;
            real_point[i].x = point[i].y;
            real_point[i].y = point[i].z;


           point_object_inst[i] = Instantiate(point_object, real_point[i], Quaternion.identity) as GameObject;
        }
    }
    void Update () {

        for (int i = 0; i < point.Length; i++)
        {
            real_point[i].z = -point[i].x;
            real_point[i].x = point[i].y;
            real_point[i].y = point[i].z;

            point_object_inst[i].transform.position =  real_point[i];
        }

    }
}

собственно в строке real_point[i].z = -point[i].x; метода update вылезает такое. А ранее и чуть ниже - в

point_object_inst[i].transform.position =  real_point[i];

знаю что это из за того что обращаюсь к null, но как исправить - не могу понять, конкретно для моего случая, потому что "букварь прокурил" о чем очень сожалею. Объектно ореинтированные языки для меня новое и поэтому с инициализацией объектов я туплю- в старом добром фортране просто объявил переменную и живи спокойно) Так вот, прошу популярно объяснить в чем тут ошибка. ПОдобную ошибку в методе Start я исправил инициализировав real_point.

Answer 1

real_point и point_object_inst - члены класса, не будем объявлять их локальными переменными в методе Start:

void Start () {
  /* убрать Vector3[] */ real_point = new Vector3[point.Length];
  /* убрать GameObject[] */ point_object_inst = new GameObject[point.Length];
  ...
READ ALSO
Логика в LINQ запросах

Логика в LINQ запросах

Можно сделать проверку переменной на null в LINQ запросе? Если переменная равна NULL то where не производит фильтрацию

374
Видеоплеер для WinForms

Видеоплеер для WinForms

В WinForm приложение нужно встроить видео плеерНеобходимы в основном только базовые команды - воспроизведение, пауза, стоп, перемотка (переместиться...

479
открыть файл Excel на чтение c#

открыть файл Excel на чтение c#

Задача забирать данные из файла Excel

655
Как распарсить в php двумерный xml в php

Как распарсить в php двумерный xml в php

Как в php распарсить xml такого вида:

334