NullReferenceException
|
|
respectum | Дата: Воскресенье, 13 Апреля 2014, 23:20 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Добрый вечер! Компилятор выдает ошибку "NullReferenceException: Object reference not set to an instance of an object StartScreen1.Update () (at Assets/PR/StartScreen1.cs:21)", а именно ему не нравится строчка "Reaction.run = true;", не подскажет кто-нибудь, почему?
код с# Код using UnityEngine; using System.Collections;
public class StartScreen1 : MonoBehaviour {
public bool sawOnce = false; void Start () { if (!sawOnce) { GetComponent<SpriteRenderer>().enabled = true; Time.timeScale = 0; } sawOnce = true; }
void Update () { var Reaction = Camera.main.GetComponent<Reaction>(); if (Time.timeScale == 0 && (Input.GetMouseButtonDown (0))) { Time.timeScale = 1; GetComponent<SpriteRenderer> ().enabled = false; Reaction.run = true; Destroy (this.gameObject); } } }
|
|
| |
zaicev9797 | Дата: Понедельник, 14 Апреля 2014, 00:04 | Сообщение # 2 |
AbRaKaDaBrA
Сейчас нет на сайте
| значит нет в скрипте Reaction переменной run, или она называется както по другому (хотябы немного)
проект Mysterious Space. The losted moment
|
|
| |
KamiRonin | Дата: Понедельник, 14 Апреля 2014, 00:30 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| проверь Reaction на null перед .run: Код if(Reaction) Reaction.run = true; скорее всего на ГЛАВНОЙ камере не повешен скрипт Reaction и поэтому GetComponent возвращает null или #2
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
|
|
| |
respectum | Дата: Понедельник, 14 Апреля 2014, 11:33 | Сообщение # 4 |
был не раз
Сейчас нет на сайте
| Странно...в скрипте Reaction переменная абсолютно так же называется, ошибки нет. Проверил на null, теперь ошибку не выдает, но и игра работает теперь не так как нужно, то есть по этому скрипту должна держаться грубо говоря пауза, пока не нажмешь на кнопку, на которой скрипт висит, но она не держится
|
|
| |
KamiRonin | Дата: Понедельник, 14 Апреля 2014, 13:07 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Цитата respectum ( ) на ГЛАВНОЙ камере не повешен скрипт Reaction
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
|
|
| |
respectum | Дата: Понедельник, 14 Апреля 2014, 14:20 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Хм...у меня на объекте, где висит скрипт Reaction, стоит тег Main Camera, так не катит?
|
|
| |
lentinant | Дата: Понедельник, 14 Апреля 2014, 20:27 | Сообщение # 7 |
ленивый программист
Сейчас нет на сайте
| Не называйте переменные названием класса (во всяком случае, с точностью до регистра). Твое может восприниматься как попытка изменения статической переменной класса Reaction. Не знаю, в этом ли проблема, но это все равно ошибка.
Когда-то тут будут ссылки на крутые проекты. Или нет.
Сообщение отредактировал lentinant - Понедельник, 14 Апреля 2014, 20:27 |
|
| |
KamiRonin | Дата: Понедельник, 14 Апреля 2014, 23:10 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Цитата respectum ( ) Хм...у меня на объекте, где висит скрипт Reaction, стоит тег Main Camera, так не катит? нет. этот объект должен быть камерой. он камера?
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
|
|
| |
respectum | Дата: Вторник, 15 Апреля 2014, 11:51 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| KamiRonin, в этом то и проблема, что нет.. пробовал через Код var RR = GameObject.Find("RR").GetComponent<Reaction>(); if(RR.run) { RR.run = falsel }
нифига тоже не пашет, держится пауза и все, даже когда нажимаю на кнопку. даже не представляю, что можно еще сделать
|
|
| |
KamiRonin | Дата: Вторник, 15 Апреля 2014, 13:22 | Сообщение # 10 |
почти ветеран
Сейчас нет на сайте
| млин! должно быть: Код var RR = GameObject.Find("RR").GetComponent<Reaction>(); if(RR) { RR.run = falsel } сама RR - у тебя пустая. не получает скрипта. может у тебя скрипт Reaction на c#?? может в джаве он не видит его. я бы попробовал сделать оба скрипта на шарпе. проверил - находит ли он RR в Find!
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
|
|
| |
respectum | Дата: Вторник, 15 Апреля 2014, 20:10 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| KamiRonin, у меня оба скрипта на c#. в Find я ищу объект, который у меня называется RR, а после var я тупо так же назвал RR
|
|
| |
KamiRonin | Дата: Вторник, 15 Апреля 2014, 20:40 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| Цитата respectum ( ) в Find я ищу объект, который у меня называется RR, а после var я тупо так же назвал RR про Find понятно.. находит ли он его не ясно!
и почему у переменной RR тип var? почему тип не Reaction? ясно конечно что они "функционально идентичны" как написано в руководстве.. но это же юнька.. через отладку давно бы уже выявил где сбой: - не находит объект (нужно проверить название) - объект находит, но на объекте нет скрипта Reaction - неверное приведение типа в переменной создает скрытую потерю ссылки.. (нужно попробовать изменить тип вар на реакшн и сразу после получения вывести значение переменной в дебуг.Лог). - в скрипте Reaction нет поля run, или оно не публичное, или это проперть в которой стоит режим только для чтения (была бы другая ошибка не нулРеференс.. но я б и это проверил) других причин вроде быть не должно.
Мыслю - значит программирую... Конструктивная критика - умных ведет к совершенству... Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
|
|
| |
mrFrankenstein | Дата: Пятница, 18 Марта 2016, 23:50 | Сообщение # 13 |
частый гость
Сейчас нет на сайте
| А что это за скрипт Reaction?
|
|
| |