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

Несколько Toggle, сделать выбор при нажатии

31.03.2019, 11:59. Показов 6297. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день господа. Никак не могу логически домыслить.
На сцене есть 9 Toggle.
Хочу в потоке отловить какие Туглы были нажаты.

C#
1
2
3
4
5
6
7
8
9
10
public Toggle[] _Toggles;
private bool _selected;
 
 switch (_selected)
            {
                case _Toggle[0].isOn = true :
                    /*Делаю определённые действия*/;
                    break;
 
            }
Мне говорят что нужно постоянное значение. Мне надо сначала получить постоянное значение?
Только понять не могу как

Добавлено через 1 час 0 минут
В общем, как в скрипте понять какой Toggle был нажат?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2019, 11:59
Ответы с готовыми решениями:

Передвинуть несколько объектов при нажатии на кнопку
я только начал разбираться в unity и мало что знаю, так вот, имеется меню (2D), мне нужно что бы при нажатии, к примеру на...

Как сделать так что бы при нажатии одной кнопки сделать разные вещи несколько раз ?
можно взять интегер i, и если оно ровно 1 то делай это а если нет то нет и если кликнуть на кнопку то i ровно 1, так другая кнопка будет...

Как сделать, чтобы при нажатии кнопки в форме, добавлялось еще несколько полей?
Мне нужно решить систему уравнений, произвольного количества. И еще вопросик, как сделать форму адаптивной?

11
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
31.03.2019, 12:09
Цитата Сообщение от anomal6 Посмотреть сообщение
В общем, как в скрипте понять какой Toggle был нажат?
вроде бы в этого переключателя есть екшн который вызываеться при смене значения, посмотри там в редакторе в компоненте
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
31.03.2019, 15:30  [ТС]
Цитата Сообщение от kitsoRik Посмотреть сообщение
екшн который вызываеться при смене значения, посмотри там в редакторе в компоненте
IsOn;

нашёл решение как сделать

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  bool[] Cheacked;
    public Toggle[] tio;
 
    private void Start()
    {
        Cheacked = new bool[tio.Length];
        for(int i = 0; i < tio.Length; i++)
        {
            Cheacked[i] = true;
            int index = i;
 
            Toggle t = tio[i];
            
            t.onValueChanged.AddListener(
                (bool check) =>
                {
                    Debug.Log(t);
                    CheckBox(index, check);
                }
                );
        }
    }
    void CheckBox(int index, bool check)
    {
      
        Cheacked[index] = check;
        
    }
Добавлено через 2 часа 5 минут
Цитата Сообщение от anomal6 Посмотреть сообщение
нашёл решение как сделать
Блин а теперь не могу их посчитать.
Вывод идёт так
Code
1
0 = true
если нажал вторую
Code
1
2
0=false
1=true
как мне узнать какие активные чекбоксы?

Добавлено через 4 минуты
C#
1
2
3
4
5
6
7
8
9
10
foreach (Toggle tgl in this.Toggle)
        {
            if (tgl as Toggle == null)
            {
                if ((tgl as Toggle).isOn)
                {
                    result += tgl .name + "\n";
                }
            }
        }
показывает чепухню
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
31.03.2019, 17:06
Цитата Сообщение от anomal6 Посмотреть сообщение
как мне узнать какие активные чекбоксы?
C#
1
2
3
4
5
6
7
for (int i = 0; i < tio.Length; i++)
{
    if (tio[i].isOn)
    {
        // bla bla bla
    }
}
1
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
31.03.2019, 19:23  [ТС]
Цитата Сообщение от 1max1 Посмотреть сообщение
Цитата Сообщение от anomal6 Посмотреть сообщение
как мне узнать какие активные чекбоксы?
C#
1
2
3
4
5
6
7
for (int i = 0; i < tio.Length; i++)
{
 if (tio[i].isOn)
 {
 // bla bla bla
 }
}
Сделал так
C#
1
2
3
4
5
6
7
8
9
10
11
 foreach (Toggle control in this._ToggleIsOn._Toggles)
         {
             if (control as Toggle != null)
             {
                 if ((control as Toggle).isOn)
                 {
                    resultat += control.tag + ",";
                 }
             }
 
         }
И всё я запутался. Выручайте.

У меня есть 9 чекбоксов. Как их найти я вкурсе.
Получаю их в виде строки как пример
Code
1
1,5,8,9
Так же есть массив данных их тоже 9
но получаю я их в виде строк
Code
1
2
3
4
5
6
7
8
9
150
220 
250
320 
280 
690 
50 
150
450
Задача состоит в том, чтобы определить количество чекбоксов (что уже известно, сложить числа в массиве)
Например выбраны чекбоксы 1,2,3
Исходя из этого скалдываю 150 + 220 + 250.
И чего то я запутался
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.04.2019, 17:23
Лучший ответ Сообщение было отмечено anomal6 как решение

Решение

Задача какая?

Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
public Toogle[] tgs;
public int[] weights;
///
var result = 0;
for(int i=0; i<tgs.Length; i++)
 result += tgs[i].isOn ? weights[i] : 0;
Debug.LogFormat("Result: {0}", result);
1
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
01.04.2019, 17:24
C#
1
2
3
4
5
6
7
Toogle[] toogles;
string[] values;
int total = 0;
 
for (int i = 0; i < toogles.Lenght; ++i)
    if (toogles[i].isOn)
        total += int.Parse(values[i]);
1
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.04.2019, 17:28
1max1, перестань троллить новичков )) вот запустит он сейчас, а завтра введет буквы, получит ошибку на парсе и поймает истерику ))
0
 Аватар для 1max1
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
01.04.2019, 17:29
Не мои проблемы, пусть не ошибается)
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
01.04.2019, 18:44  [ТС]
Цитата Сообщение от Cr0c Посмотреть сообщение
Задача какая?
Запутался в коде, хотел сделать быстрее и перестал комментировать код.
Стоило немного отдохнуть и начать заново.
Сделал следующим образом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 for (int i = 0; i < _ToggleIsOn._Toggles.Length; i++)
        {
            if (_ToggleIsOn._Toggles[i].isOn)
            {
                switch (i)
                {
                    case 0:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 1:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 2:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 3:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 4:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 5:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 6:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 7:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                    case 8:
                        Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
                        break;
                }
                Debug.Log("Полная стоимость получилась " + allPrice.ToString());
            }
 
        }
Спасибо Вам большое 1max1 и Cr0c

У меня правда проблемы теперь с базой но это совсем другая история
> Другая история <
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
01.04.2019, 19:13
anomal6, ты шо дурак???

это бля что за один код во всех кейсах?

Такое ощущения что у тебя ограничения строго в восемь сценариев,почему бы просто в цикле не прописать:

C#
1
2
Debug.Log("Выбрано " + _ToggleIsOn._Toggles[i] + " Это цена " + result_price[i]);
                        allPrice += Convert.ToInt32(result_price[i]);
0
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
01.04.2019, 20:54  [ТС]
Цитата Сообщение от kitsoRik Посмотреть сообщение
Такое ощущения что у тебя ограничения строго в восемь сценариев
Да строго, но не 8 а 14
Выбор определённого chkBox определённая цена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2019, 20:54
Помогаю со студенческими работами здесь

Как сделать, чтобы при первом нажатии на кнопку TButton появлялось одно сообщение, а при втором нажатии - другое?
помогите как сделать в чтобы в кнопке button при первом нажатий вылазило сообщение ShowMessage('Вы ввели неверные данные, повторите...

При нажатии на Button1 в Edit1 или Label1 записывается цифра 50, при повторном нажатии к этой 50 прибавляется еще 50. Как сделать?
Помогите сделать следующее. При нажатии на Button1 в Edit1 или Label1 записывается цифра 50, при повторном нажатии к этой 50 прибавляется...

Как сделать, чтобы при выборе поля в ListBox и нажатии кнопки "Выбор" поле исчезло
список ListBox c черырьмя опциями, RadioGroup с теми же опциями, флажок CheckBox, кнопка «Выбор» и кнопка «Закрыть». При выборе опции и...

Memo в delphi / как сделать так чтобы при нажатии на кнопку memo появляется, при повторном нажатии исчезает
как сделать так чтобы при нажатии на кнопку текст с memo появляется, при повторном нажатии исчезает - как сделать так чтобы при нажатии...

Toggle на несколько Div
Здравствуйте уважаемые форумчане. Я отчаялся решить вопрос и по этому прошу помощи. У меня есть несколько Div которые я хочу переключать...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru