Как улучшить код? исправление гвн кода.

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

Как улучшить код? исправление гвн кода.

Сообщение Puish 20 янв 2021, 12:22

Есть вот такой вот код:
Синтаксис:
Используется csharp
public class PlayerCharacter : MonoBehaviour
{
public Joystick joystick;
public Image[] hearts;
void Start()
    {
        hearts[0] = GameObject.Find("UI Heart (0)").GetComponent<Image>();
        hearts[1] = GameObject.Find("UI Heart (1)").GetComponent<Image>();
        hearts[2] = GameObject.Find("UI Heart (2)").GetComponent<Image>();
        hearts[3] = GameObject.Find("UI Heart (3)").GetComponent<Image>();
        hearts[4] = GameObject.Find("UI Heart (4)").GetComponent<Image>();
        joystick = GameObject.Find("Fixed Joystick").GetComponent<FixedJoystick>();
    }
}
 


есть префаб и я хочу что-бы при размещении этого префаба в сцену тот сразу же получал нужные внешние компоненты и поэтому я написал такой код в Starte, насколько оно адекватное, что можно исправить, сделать лучше и т.д., а еще я знаю что
Синтаксис:
Используется csharp
hearts[i] = GameObject.Find().GetComponent<Image>();
, написал плохо, но не особо понимаю как написать правильнее.
Puish
UNец
 
Сообщения: 22
Зарегистрирован: 12 окт 2020, 19:54

Re: Как улучшить код? исправление гвн кода.

Сообщение Xtir 20 янв 2021, 13:30

можно вот так:
Синтаксис:
Используется csharp
hearts = GetComponentsInChildren<Image>();

PS а почему их нельзя сразу определить в инспекторе?
Xtir
UNIверсал
 
Сообщения: 498
Зарегистрирован: 21 окт 2016, 00:37

Re: Как улучшить код? исправление гвн кода.

Сообщение Puish 21 янв 2021, 22:21

Xtir писал(а):можно вот так:
Синтаксис:
Используется csharp
hearts = GetComponentsInChildren<Image>();

PS а почему их нельзя сразу определить в инспекторе?

А как определить их в инспекторе? типа в инспекторе нет gameObject/GetComponent, так что я не знаю как их определять.
Puish
UNец
 
Сообщения: 22
Зарегистрирован: 12 окт 2020, 19:54

Re: Как улучшить код? исправление гвн кода.

Сообщение tchezarre 22 янв 2021, 23:24

Как вот это
public Image[] hearts;
выглядит в инспекторе? Почему public? Почему не NullRef при обращении к hearts[100000], причем сам массив даже не создан, т.е. отсутствует hearts = new Image[5]? Размышляя над этими вопросами можно постигать ДАО.
tchezarre
UNец
 
Сообщения: 25
Зарегистрирован: 23 янв 2014, 06:44
Откуда: Владивосток


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 4