Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 21.09.2016
Сообщений: 62

Откликается только одна кнопка из двух

06.06.2019, 12:18. Показов 1641. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На панели есть две кнопки, действие каждой из которых прописано в скрипте. Однако, при запуске сцены, реагирует только одна; почему?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void OnClick()
    {
        if (YesBuy && cost < currentMoney)
        {
            print(111);
            anim.SetBool("isOpened", false);
        }
        if (NoBuy && cost > currentMoney)
        {
            print("fff");
            anim.SetBool("isOpened", false);
 
        }
    }
Обе кнопки как публичные, в инспекторе все указано.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2019, 12:18
Ответы с готовыми решениями:

[Visual Prolog] не откликается одна кнопка из контейнера GroupBox
Всем доброго времени суток.. Есть проблемка.. Имеется прога по заданию.. Есть бд в текстовом файле.. по принципу.. тема:...

Не откликается на событие Click кнопка
Здравствуйте. Не могу понять, при компиляции при нажатии на кнопку не происходит не каких действий. Как буд то на выполнение при нажатии...

Почему отображается только одна кнопка, когда должно быть две?
&lt;button class=&quot;open-button&quot; onclick=&quot;openForm()&quot;&gt;Регистрация&lt;/button&gt; &lt;button class=&quot;open-button&quot;...

11
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.06.2019, 12:36
Не реагирует на мышь? Или не вызывает метод OnClick? Если в самом начале метода OnClick прописать какой нибудь print, то тоже не выводится в консоль?
0
0 / 0 / 1
Регистрация: 21.09.2016
Сообщений: 62
06.06.2019, 12:45  [ТС]
Цитата Сообщение от samana Посмотреть сообщение
какой нибудь print
Так работает. Но условие вызывается только NoBuy, YesBuy, как ни крути, никак не могу вызвать.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.06.2019, 12:51
Но в обоих случаях там выполняется одно и то же условие anim.SetBool("isOpened", false);
Чтобы проверить YesBy, то возьмите и действительно проверьте его для теста:
C#
1
2
3
4
5
6
public void OnClick()
{
    Debug.Log(YesBuy);
    Debug.Log(cost);
    Debug.Log(currentMoney);
...
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
06.06.2019, 13:02
Всё чаще замечаю, что люди просто не умеют дебажить свой код, и при чем очень редко где встречаю чтобы раскрывали эту тему в уроках. В основном рассказывают как "сделать", а не как "проверить" что ты сделал правильно.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.06.2019, 13:10
Цитата Сообщение от 1max1 Посмотреть сообщение
Всё чаще замечаю, что люди просто не умеют дебажить свой код
Согласен полностью, причём некоторые даже не знают, что есть такая возможность как Debug.Log, а за отладку в редакторе кода вообще и речи нет.
0
0 / 0 / 1
Регистрация: 21.09.2016
Сообщений: 62
06.06.2019, 13:14  [ТС]
Цитата Сообщение от samana Посмотреть сообщение
проверьте его
Проверил, реагирует, в логе выводится именно YesBuy, но в консоль выводится не принт с единицами, а принт с f, т.е. якобы происходит условие для NoBuy. Это и ставит в тупик, где ошибка и почему для YesBuy воспроизводится условие, написанное для NoBuy.
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.06.2019, 13:19
Цитата Сообщение от ElTonio Посмотреть сообщение
в логе выводится именно YesBuy
В логе должно было отобразиться значение из YesBuy, то-есть true или false, чтобы проверить - действительно ли при клике мышкой по кнопке, в этот момент YesBuy равняется true, и cost меньше чем currentMoney?
Вдруг на этот момент YesBuy равняется false например.
0
0 / 0 / 1
Регистрация: 21.09.2016
Сообщений: 62
06.06.2019, 13:44  [ТС]
Цитата Сообщение от samana Посмотреть сообщение
значение из YesBuy
Вот что я сделал:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public void OnClick()
    {
 
        if (YesBuy && cost < currentMoney)
        {
            Debug.Log(YesBuy);
            print(111);
            anim.SetBool("isOpened", false);
        }
        if (NoBuy && cost > currentMoney)
        {
            Debug.Log(NoBuy);
            print("fff");
            anim.SetBool("isOpened", false);
 
        }
    }
Прилагаю скриншот инспектора и окно вывода сообщений. Обращаю внимание, что все, что выведено - результат нажатия YesBuy
Миниатюры
Откликается только одна кнопка из двух  
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
06.06.2019, 14:00
Боже, ну очевидно же что либо YesBuy == false либо cost >= currentMoney.
YesBuy это что вообще? Зачем это нужно? Не проще ли сделать 2 отдельных метода, отдельно для одной и другой кнопки?
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
06.06.2019, 14:04
Лучший ответ Сообщение было отмечено ElTonio как решение

Решение

ElTonio, Нужно выяснить значения переменных ДО того, как сработает какое либо условие, а не внутри if-ов, которые могут и не выполнится даже.
Замените метод на следующее и
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void OnClick()
{
    Debug.Log("При клике мышкой были такие значения:");
    Debug.Log("YesBuy: " + YesBuy);
    Debug.Log("cost: " + cost);
    Debug.Log("currentMoney: " + currentMoney);
 
    if (YesBuy && cost < currentMoney)
    {
        print(111);
        anim.SetBool("isOpened", false);
    }
    if (NoBuy && cost > currentMoney)
    {
        print("fff");
        anim.SetBool("isOpened", false);
 
    }
}
просто скопируйте текст сюда, который появится в консоли после клика по кнопке.
0
0 / 0 / 1
Регистрация: 21.09.2016
Сообщений: 62
06.06.2019, 15:24  [ТС]
Цитата Сообщение от samana Посмотреть сообщение
Замените метод на следующее
То, что после && в каждом условии я добавлял в процессе попыток выяснить как работает вообще нажатие кнопок и почему нет желаемого результата. Заменил значение cost на более низкое и получил желаемый результат. Сам себя запутал и еще всех вас тут напряг, спасибо за отклик!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2019, 15:24
Помогаю со студенческими работами здесь

Из двух колонок работает только одна
Добрый день! У меня такая проблема - колонки 2.1 Sven MS-960. От саба идет две колонки. Но работает только правая. Если подключить левую...

Почему работает только одна форма из двух?
Помогите, пожалуйста, сам я в javascript понимаю слабо. Сделал две аналогичных формы, запускаемых одним скриптом, кликами по разным...

Tomcat откликается только на 127.0.0.1
Tomcat откликается только на 127.0.0.1 даже localhost молчит. Другие проги на Java localhost и &lt;comp_name&gt; понимают. настройка...

Какова вероятность, что из двух деталей одна качественная, а одна бракованная
Первый завод выпускает 82% качественных деталей, второй 78%. Наудачу взяты по одной детали каждого завода. Какова вероятность, что одна из...

Доказать,что через всякую точку фазового пространства проходит одна и только одна фазовая кривая
народ хелп. доказать,что через всякую точку фазового пространства проходит одна и только одна фазовая кривая. с чего начать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru