Отследить момент смены значения переменной

Программирование на Юнити.

Отследить момент смены значения переменной

Сообщение Sandirk 10 июн 2020, 15:55

Здравствуйте

Я использую немного нестандартное устройство ввода в своей игре. На нём есть тумблер (переключатель). По своей сути он представляет собой джойстик, но с всего двумя положениями. В одном положении он выдаёт значение 1, а в другом -1.

Использую скрипт:
Синтаксис:
Используется csharp
var a = Input.GetAxis("Arm"); //Получаем значение тумблера (переключателя)

if (a > 0.0f)
{
    // *Действия, выполняемые в верхнем положении тумблера (переключателя)*
}

if (a < 0.0f)
{
    // *Действия, выполняемые в нижнем положении тумблера (переключателя)*
}
 


Каким образом можно отследить момент, когда я переключаю положение тумблера (переключателя)? В этот момент предполагается вызывать какое либо действие один раз (Также, как при нажатии на обычную кнопку).

Заранее спасибо.
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Отследить момент смены значения переменной

Сообщение waruiyume 10 июн 2020, 16:04

Синтаксис:
  1. int раньше; 
  2. если(раньше!=(int)сейчас) 
  3.   СделаатьБочку(): 
  4.   раньше=(int)сейчас; 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Отследить момент смены значения переменной

Сообщение 1max1 10 июн 2020, 16:04

Запомни старое значение и сравнивай с текущим.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Отследить момент смены значения переменной

Сообщение Sandirk 10 июн 2020, 16:22

waruiyume писал(а):
Синтаксис:
  1. int раньше; 
  2. если(раньше!=(int)сейчас) 
  3.   СделаатьБочку(): 
  4.   раньше=(int)сейчас; 


Можно подробнее? Понял только про бочку.
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Отследить момент смены значения переменной

Сообщение Sandirk 10 июн 2020, 17:02

1max1 писал(а):Запомни старое значение и сравнивай с текущим.


Задумывался над этим. Какой командой можно получить значение числа в прошлом? Можно и ссылкой на документацию
Аватара пользователя
Sandirk
UNITрон
 
Сообщения: 150
Зарегистрирован: 04 фев 2019, 21:48

Re: Отследить момент смены значения переменной

Сообщение Woland 10 июн 2020, 17:07

Синтаксис:
Используется csharp
int oldAxis;
void Update()
{
   int a=newAxis;
   if(a==1)....
   if(a==-1)...
   if(oldAxis!=a) doSmth;
   oldAxis=a;
}
Woland
Адепт
 
Сообщения: 1240
Зарегистрирован: 20 апр 2013, 18:09
  • Сайт

Re: Отследить момент смены значения переменной

Сообщение Инженер 19 июн 2020, 14:38

В апдейте устраивать проверку это плохая идея. Лучше сделать переменную приватной и манипуляции с переменной производить с помощью get/set. Тогда легко в область с set записать дополнительные действия: если новое значение отличается от текущего, выполняешь то, что тебе нужно.
Инженер
UNIт
 
Сообщения: 88
Зарегистрирован: 22 май 2016, 11:13

Re: Отследить момент смены значения переменной

Сообщение waruiyume 19 июн 2020, 14:51

Sandirk писал(а):Input.GetAxis("Arm")

Как можно без апдейта обойтись?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Отследить момент смены значения переменной

Сообщение Инженер 19 июн 2020, 14:53

Пардон, не дочитал вопрос
Инженер
UNIт
 
Сообщения: 88
Зарегистрирован: 22 май 2016, 11:13

Re: Отследить момент смены значения переменной

Сообщение Dewa1s 22 июн 2020, 05:04

Property же
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Re: Отследить момент смены значения переменной

Сообщение Woolf 22 июн 2020, 10:05

Блин, а для чего в сишарпе придумали геттеры и сеттеры?

Синтаксис:
Используется csharp
private int _myValue;

public int myValue {
 get {
 return _myValue;
}

set {
  if (value!=_myValue) {
    callChangeMethod();
  }
  _myValue=value;
}
}
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9