YugGO
@YugGO

По какой причине не работает null в Unity?

В коде:
public Text infoObjectText;

private void Update()
    {
        float dis = 3.5f;

        RaycastHit hit;

        if (Physics.Raycast(playerCamera.GetComponent<Camera>().transform.position, playerCamera.GetComponent<Camera>().transform.forward, out hit, dis))
        {
            InfoObject infoObject = hit.transform.GetComponent<InfoObject>();

            if (infoObject != null)
            {
                infoObjectText.enabled = true;
            }
            
            else if (infoObject == null)
            {
                infoObjectText.enabled = false;
            }
        }
    }


Этот элемент кода у меня не работает:
else if (infoObject == null)
{
      infoObjectText.enabled = false;
}


На сцене просто один кубик, со скриптом "InfoObject". И когда я навожу центром камеры на куб, "infoObjectText" включается, а если не смотреть, то "infoObjectText" не отключается.
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Дело в том, что у вас проверка ТОТ объект или НЕ ТОТ срабатывает только когда луч ПОПАДАЕТ по какому-либо объекту. А когда луч уходит в пустоту, попадания нет, проверки не срабатывают. Вот и думайте как это обойти, можно несколько способов придумать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vabka
Токсичный
У вас видимо компонент не становится null. Попробуйте другой способ.
PS: Код можно упростить до infoObjectText.enabled = infoObject != null;
Ответ написан
NevePMoPe
@NevePMoPe
Да, соглашусь попробуйте выше описанным методом infoObjectText.enabled = infoObject != null;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы