Нужен ли GetComponent?

Программирование на Юнити.

Нужен ли GetComponent?

Сообщение ArcadyiM 29 ноя 2019, 15:26

Почему все используют такой скрипт на объекте с rigidbody?
Синтаксис:
Используется csharp
public Rigidbody rb;

void Start()
{
rb = GetComponent<Rigidbody>();
}

void Update()
{
 rb.velocity/AddForce/ и.т.д.
}

 

И в инспекторе указывают твердое тело на этом же объекте.
Ведь public Rigidbody rb; уже позволяет использовать rb.
А GetComponent получает это Rigidbody ещё раз.
Это действительно ошибка многих или я просто дурачек и не понимаю что-то элементарное?
ArcadyiM
UNец
 
Сообщения: 11
Зарегистрирован: 17 окт 2019, 13:51

Re: Нужен ли GetComponent?

Сообщение Friend123 29 ноя 2019, 15:48

Кто все-то? Я лично так не делаю, но тут возможно человек делает "на всякий случай", чтобы переменная была инициализирована.
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

Re: Нужен ли GetComponent?

Сообщение 1max1 29 ноя 2019, 15:49

Если рб указывается в инспекторе, то геткомпонент не нужен.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Нужен ли GetComponent?

Сообщение Jarico 29 ноя 2019, 16:14

Проверку на null делаешь и если Rigidbody == null то GetComponent
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Нужен ли GetComponent?

Сообщение StupidMoth 01 дек 2019, 08:20

GetComponent используют в таких случаях:
Синтаксис:
Используется csharp
public GameObject obj;
private Rigidbody rb;
...
rb = obj.GetComponent<Rigidbody>();
 

Или так:
Синтаксис:
Используется csharp
private Rigidbody rb;
...
rb = GetComponent<Rigidbody>();
 

Но не так, как написано у вас.
Аватара пользователя
StupidMoth
UNец
 
Сообщения: 23
Зарегистрирован: 23 ноя 2019, 17:33

Re: Нужен ли GetComponent?

Сообщение Jarico 01 дек 2019, 09:44

StupidMoth писал(а):GetComponent используют в таких случаях:
Синтаксис:
Используется csharp
public GameObject obj;
private Rigidbody rb;
...
rb = obj.GetComponent<Rigidbody>();
 

Или так:
Синтаксис:
Используется csharp
private Rigidbody rb;
...
rb = GetComponent<Rigidbody>();
 

Но не так, как написано у вас.


Автор так и написал =))
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

Re: Нужен ли GetComponent?

Сообщение seaman 01 дек 2019, 10:53

Автор так и написал

Не так. Читайте внимательно.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Нужен ли GetComponent?

Сообщение alew 01 дек 2019, 18:22

1max1 писал(а):Если рб указывается в инспекторе, то геткомпонент не нужен.


Я тоже чего то не понимаю. Если не написать rb = GetComponet.. то в консоли вываливается ошибка при обращение к RigidBody, даже если он есть в инспекторе.
alew
UNIт
 
Сообщения: 76
Зарегистрирован: 23 ноя 2018, 19:59

Re: Нужен ли GetComponent?

Сообщение seaman 01 дек 2019, 18:35

Показывайте скрины - есть в инспекторе, ошибка, как пытаетесь получить...
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12