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

Ui button не меняет значение переменной

14.02.2019, 21:13. Показов 2211. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, мне нужно, чтобы при нажатии на кнопку на счет добавлялись деньги, но, к сожалению, они не добавляются(
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class Buttons : MonoBehaviour {
 
    public Sprite button_off, button_on;
    public Text Money, Status;
    public GameObject Tea, Latte, Espresso, Americano, Kapuchino, Tripplo, Macknato;
    int procent = 0;
    public int money = 0;
 
    
    void FixedUpdate()
    {
        Money.text = money.ToString();
    }
 
    IEnumerator MakeADrink()
    {
        while (procent != 100)
        {
            procent++;
            yield return new WaitForSeconds(0.1f);
            Status.text = procent.ToString();
        }
        yield return new WaitForSeconds(0.5f);
        Status.text = "Готово!";
        GetComponent<SpriteRenderer>().sprite = button_off;
    }
 
    public void Pl1() { money += 1; }
    public void Pl2() { money += 2; }
    public void Pl5() { money += 5; }
    public void Pl10() { money += 10; }
    public void Pl50() { money += 50; }
    public void Pl100() { money += 100; }
    public void Pl200() { money += 200; }
    public void Pl500() { money += 500; }
 
    void OnMouseUpAsButton()
    {
        switch (gameObject.name)
        {
            case "Tea":
                if (money >= 15)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 15;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
 
            case "Latte":
                if (money >= 30)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 30;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
 
            case "Espresso":
                if (money >= 25)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 25;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Americano":
                if (money >= 20)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 20;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Kapuchino":
                if (money >= 25)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 25;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Tripplo":
                if (money >= 35)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 35;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Macknato":
                if (money >= 35)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 35;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
        }
    }
 
}
Миниатюры
Ui button не меняет значение переменной  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2019, 21:13
Ответы с готовыми решениями:

Функция не меняет значение глобальной переменной
Функция не меняет значение переменной, а нужно чтобы меняло. В JavaScript я нуб. Описание функции queryFeatures : queryFeatures(query,...

Программа сама меняет значение переменной
Есть процедура procedure arrVcicl01; begin c:=0; varStructura:=arrStructure; c1:=varStructura.razmer-1; ...

Не меняет значение переменной массива POST
Ребят, такая проблема. Есть форма и в ней некоторое количество button'ов, которые имеют свои value. Когда я первый раз кликаю на какую-либо...

12
 Аватар для сегодня Николай
15 / 8 / 7
Регистрация: 22.02.2018
Сообщений: 85
Записей в блоге: 1
15.02.2019, 16:25
[quote="ReFeSeR;13326479"]public void Pl1() { money += 1; }
* * public void Pl2() { money += 2; }
* * public void Pl5() { money += 5; }
* * public void Pl10() { money += 10; }
* * public void Pl50() { money += 50; }
* * public void Pl100() { money += 100; }
* * public void Pl200() { money += 200; }
Цитата Сообщение от ReFeSeR Посмотреть сообщение
void OnMouseUpAsButton()
* * {
а где у тебя собственно вызываются эти методы?
* *
void OnMouseUpAsButton() тут только условие на продукты
0
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
15.02.2019, 16:59
void OnMouseUpAsButton() тут только условие на продукты
Это юнитековский метод - вызывается ui элементах и коллайдерах
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 30
15.02.2019, 21:17  [ТС]
вызываются они с кнопки, на скриншоте справа показан инспектор одной из кнопок, с помощью события OnClick()
Миниатюры
Ui button не меняет значение переменной  
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
15.02.2019, 21:57
ReFeSeR, возможно они прибавляються но ты не выводишь?
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 30
15.02.2019, 22:09  [ТС]
А как их выводить? Пробывал ставить обновление текста прямо там на кнопке, но он считает их как отдельную переменную и в итоге на покупку чая денег не хватает, если даже с кнопок их стало уже 100, пробывал этим функциям передавать ref int money, но тогда уже эту функцию не видно с инспектора
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
15.02.2019, 22:39
ReFeSeR, Debug.Log() - попробуй
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 30
16.02.2019, 09:35  [ТС]
он считает их, как отдельную локальную переменную
Миниатюры
Ui button не меняет значение переменной  
0
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
16.02.2019, 09:46
Замени это
C#
1
2
3
4
5
6
7
8
 public void Pl1() { money += 1; }
    public void Pl2() { money += 2; }
    public void Pl5() { money += 5; }
    public void Pl10() { money += 10; }
    public void Pl50() { money += 50; }
    public void Pl100() { money += 100; }
    public void Pl200() { money += 200; }
    public void Pl500() { money += 500; }
На один метод

C#
1
2
3
4
   public void Pl (int count) {
         money += count:
         Money.text = money.ToString();
   }
Добавлено через 43 секунды
FixedUpdate вообще убери
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 30
16.02.2019, 09:57  [ТС]
все равно плюсуется как отдельная переменная, а не та, которая используется в void OnMouseUpAsButton()
Миниатюры
Ui button не меняет значение переменной  
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 30
16.02.2019, 10:04  [ТС]
все, я просто теперь копирую в апдейте из текста в мани и так заработало, спасибо
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class Buttons : MonoBehaviour {
 
    public Sprite button_off, button_on;
    public Text Money, Status;
    public GameObject Tea, Latte, Espresso, Americano, Kapuchino, Tripplo, Macknato;
    int procent = 0;
    public int money = 0;
 
    private void Update()
    {
        money = int.Parse(Money.text);
    }
 
    IEnumerator MakeADrink()
    {
        while (procent != 100)
        {
            procent++;
            yield return new WaitForSeconds(0.1f);
            Status.text = procent.ToString();
        }
        yield return new WaitForSeconds(0.5f);
        Status.text = "Готово!";
        GetComponent<SpriteRenderer>().sprite = button_off;
    }
 
    public void Pl(int count)
    {
        money += count;
        Money.text = money.ToString();
    }
 
    void OnMouseUpAsButton()
    {
        switch (gameObject.name)
        {
            case "Tea":
                if (money >= 15)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 15;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
 
            case "Latte":
                if (money >= 30)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 30;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
 
            case "Espresso":
                if (money >= 25)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 25;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Americano":
                if (money >= 20)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 20;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Kapuchino":
                if (money >= 25)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 25;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Tripplo":
                if (money >= 35)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 35;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
            case "Macknato":
                if (money >= 35)
                {
                    GetComponent<SpriteRenderer>().sprite = button_on;
                    procent = 0;
                    money -= 35;
                    Money.text = money.ToString();
                    StartCoroutine(MakeADrink());
                }
                else
                {
                    Status.text = "вас не достаточно денег";
                }
 
                break;
        }
    }
 
}
Миниатюры
Ui button не меняет значение переменной  
0
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
16.02.2019, 17:11
Цитата Сообщение от ReFeSeR Посмотреть сообщение
копирую в апдейте из текста в мани
через жопу сделано конечно, лучше бы причину нашел.
0
0 / 0 / 0
Регистрация: 02.08.2018
Сообщений: 30
16.02.2019, 19:17  [ТС]
лабу закрыть сойдет думаю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.02.2019, 19:17
Помогаю со студенческими работами здесь

Как присвоить значение переменной по нажатию "Button", чтобы можно было использовать это значение в дальнейших расчётах?
Есть 5 значений одной переменной, которые необходимо назначить на, соответственно, пять штук &quot;Button&quot;. Дальнейшая формула...

Массив типа int после инкремента (приращения) другой переменной меняет свое значение .магия
Начну пожалуй с конца. Вся суть находится здесь, я её выделил ShowMessag'ами ... for (i = 0; i &lt; 7; i++) { if (Zap-&gt;State) { ...

Считать из стека верхний элемент и меняет значение переменной стека
Нужно определить макрос, который читает из стека верхний элемент и меняет значение переменной стека

Передача переменной из одного button в другой button
Внутри Button описываю массив short **Arr = new short* ; // 12000 строк в массиве for (int i = 0; i &lt; 12000; i++) { Arr=new short...

Создать button кнопку, которая при нажатии меняет название
Изменить программный код кнопки button таким образом, что бы при нажатии менялись надписи &quot;привет&quot; и &quot;пока&quot; для этого...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
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