Четверг, 09 Мая 2024, 23:32

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » NullReferenceException: Object reference not set to an insta
NullReferenceException: Object reference not set to an insta
Knife_KillДата: Воскресенье, 23 Августа 2015, 17:35 | Сообщение # 1
частый гость
Сейчас нет на сайте
Здравствуйте, постоянно выскакивает ошибка "NullReferenceException: Object reference not set to an instance of an object", что бы я не делал, как бы по-другому не писал скрипт.
Вот код:
Код
using UnityEngine;
using System.Collections;

public class BulletForce : MonoBehaviour
{

     void Start()
     {
         gameObject.transform.Rotate(180, 0, 0);
     }

     void Update()
     {
         Shoot();
     }

     void Shoot()
     {
         Control cont = GetComponent<Control>();
         if (cont.rotate == true)
         {
             transform.Translate(Vector3.right * 10 * Time.deltaTime);
         }
         else if (cont.rotate == false)
         {
             transform.Translate(Vector3.left * 10 * Time.deltaTime);
         }
     }
}


P.s. в Control есть bool переменная rotate отвечающая за поворот персонажа.
Где ошибка?
Storm54Дата: Воскресенье, 23 Августа 2015, 17:40 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
На объекте, на котором весит компонент BulletForce, нет компонента Control

Сообщение отредактировал Storm54 - Воскресенье, 23 Августа 2015, 17:40
PocifikДата: Понедельник, 24 Августа 2015, 04:43 | Сообщение # 3
участник
Сейчас нет на сайте
Немного инфы, об основах оптимизации. Сама ошибка скорее всего из за того что написали выше.
Код

Control cont = GetComponent<Control>();    

Так делать в апдейте нельзя.

Лучше сделай так (В самом классе).
Код

Control _cont;
Control cont { get { return _cont ? _cont : _cont = GetComponent<Control>(); } }

И обращайся сколько угодно к этому свойству.

А насчет ошибка, вообще если обязательно в коде требуется какой то компонент, лучше напиши перед объявлением класса (public class BulletForce : MonoBehaviour), требуемый для этого скрипта компонент (указав его класс), и он сам добавится.
Код

[RequireComponent(typeof(Control))]


Сообщение отредактировал Pocifik - Понедельник, 24 Августа 2015, 04:48
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » NullReferenceException: Object reference not set to an insta
  • Страница 1 из 1
  • 1
Поиск:

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