Страница 1 из 1

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

СообщениеДобавлено: 20 янв 2021, 12:22
Puish
Есть вот такой вот код:
Синтаксис:
Используется 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>();
, написал плохо, но не особо понимаю как написать правильнее.

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

СообщениеДобавлено: 20 янв 2021, 13:30
Xtir
можно вот так:
Синтаксис:
Используется csharp
hearts = GetComponentsInChildren<Image>();

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

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

СообщениеДобавлено: 21 янв 2021, 22:21
Puish
Xtir писал(а):можно вот так:
Синтаксис:
Используется csharp
hearts = GetComponentsInChildren<Image>();

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

А как определить их в инспекторе? типа в инспекторе нет gameObject/GetComponent, так что я не знаю как их определять.

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

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