Страница 1 из 1

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

СообщениеДобавлено: 10 июн 2020, 15:55
Sandirk
Здравствуйте

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

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

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

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


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

Заранее спасибо.

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

СообщениеДобавлено: 10 июн 2020, 16:04
waruiyume
Синтаксис:
  1. int раньше; 
  2. если(раньше!=(int)сейчас) 
  3.   СделаатьБочку(): 
  4.   раньше=(int)сейчас; 

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

СообщениеДобавлено: 10 июн 2020, 16:04
1max1
Запомни старое значение и сравнивай с текущим.

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

СообщениеДобавлено: 10 июн 2020, 16:22
Sandirk
waruiyume писал(а):
Синтаксис:
  1. int раньше; 
  2. если(раньше!=(int)сейчас) 
  3.   СделаатьБочку(): 
  4.   раньше=(int)сейчас; 


Можно подробнее? Понял только про бочку.

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

СообщениеДобавлено: 10 июн 2020, 17:02
Sandirk
1max1 писал(а):Запомни старое значение и сравнивай с текущим.


Задумывался над этим. Какой командой можно получить значение числа в прошлом? Можно и ссылкой на документацию

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

СообщениеДобавлено: 10 июн 2020, 17:07
Woland
Синтаксис:
Используется csharp
int oldAxis;
void Update()
{
   int a=newAxis;
   if(a==1)....
   if(a==-1)...
   if(oldAxis!=a) doSmth;
   oldAxis=a;
}

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

СообщениеДобавлено: 19 июн 2020, 14:38
Инженер
В апдейте устраивать проверку это плохая идея. Лучше сделать переменную приватной и манипуляции с переменной производить с помощью get/set. Тогда легко в область с set записать дополнительные действия: если новое значение отличается от текущего, выполняешь то, что тебе нужно.

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

СообщениеДобавлено: 19 июн 2020, 14:51
waruiyume
Sandirk писал(а):Input.GetAxis("Arm")

Как можно без апдейта обойтись?

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

СообщениеДобавлено: 19 июн 2020, 14:53
Инженер
Пардон, не дочитал вопрос

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

СообщениеДобавлено: 22 июн 2020, 05:04
Dewa1s
Property же

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

СообщениеДобавлено: 22 июн 2020, 10:05
Woolf
Блин, а для чего в сишарпе придумали геттеры и сеттеры?

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

public int myValue {
 get {
 return _myValue;
}

set {
  if (value!=_myValue) {
    callChangeMethod();
  }
  _myValue=value;
}
}