Воскресенье, 17 Ноября 2024, 17:47

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
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.run = true;

может восприниматься как попытка изменения статической переменной класса 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?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг