edos164
@edos164

Ошибка в коде. Как так?

Идея такая, в игре когда я достаю телефон на кнопку P и таким же образом должен его скрыть, но юнити меня за что-то ругает. Ему не нравится отрывок кода в котором я пытаюсь спрятать телефон, подскажите, что не так в этом коде, может мне следовало немного другим образом скрыть телефон?
private void Update()
    {
        takephone = Input.GetKey(KeyCode.P);
        if (takephone)
        {
            pphone.SetActive(true);
        }
        if (takephone && pphone.SetActive(true));
        {
            pphone.SetActive(false);
        }
    }


Ошибка CS0019 Оператор "&&" невозможно применить к операнду типа "bool" и "void".
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
@frog1232
Может лучше сделать так?
if (Input.GetKeyDown(KeyCode.P))
        {
            takephone = !takephone;

            if (takephone)
            {
                pphone.SetActive(true);
            }
            else
            {
                pphone.SetActive(false);
            }
        }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos Куратор тега Unity
Ругает за то что пишете хрень. Что вы ожидаете от условия
if (takephone && pphone.SetActive(true));

?
Ответ написан
@humoured
Вы всё на свете найдёте в коробке с карандашами
Оператор "&&" невозможно применить к операнду типа "bool" и "void"
Неужели не понятен этот текст? Логический оператор требует двух операндов типа "bool". Процедура SetActive() не возвращает ничего (void). Либо это условие надо переписывать, либо менять процедуру так, что бы она возвращала что-то.
Ответ написан
Комментировать
LittleBob
@LittleBob
В прошлых ответах вам правильно сказали, но предположу, что вместо SetActive вам подойдёт activeSelf, который вернёт bool.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы