События Unity | C#

Как поймать событие Input.GetAxis в Unity?

И, если можно, добавьте ссылку на документацию со всеми имеющимися событиями unity.


Ответы (3 шт):

Автор решения: Даниил Пароконный

Input.GetAxis возвращает число (текущая скорость на определенной оси), а чтобы это было событием нужно уже это реализовывать вручную. Но вообще все, что касается частого обновления, не очень то хорошо реализовывать через events, а input в особенности (проверено на собственном опыте).

Для кнопки задержка в .1s может и норм, но вот когда пытаешься удрать от врагов и управление работает с небольшой задержкой - это уже неприемлемо. Так что лучше тут воздержаться от использования событий.

→ Ссылка
Автор решения: AC Studio

Как я понял нужно обработать событие от Input.GetAxis и заставить что то выполнять. P.S: пишу с телефона и могут быть ошибки.

public  float temp 

void Update()
{
     temp -= Input.GetAxis("Mouse X");

     if(temp>0)
     {
          temp = 0;
         //вызываем что то,  если больше нуля.
      }

      if(temp<0)
      { 
           temp = 0;
           //вызываем что то,  если меньше нуля.
       }
}
→ Ссылка
Автор решения: KraGen.Games

Вот тебе событие которое при изменение Input.GetAxis будет передавать значение оси подписчикам

public delegate void Axis(float val);
public static event Axis GetAxisX;
public static event Axis GetAxisY;
void Update(){
    float axisX = Input.GetAxis("Horizontal");
    float axisY = Input.GetAxis("Vertical");
    GetAxisX?.Invoke(axisX);
    GetAxisY?.Invoke(axisY);
}
// В других скриптах где нужно получать данное событие
void OnEnable(){
    yourScriptWithEvent.GetAxisX += AxisX;
    yourScriptWithEvent.GetAxisY += AxisY;
}

private void AxisX(float val){
    //что то делаем с тем значением что получаем
}
private void AxisY(float val){
    //что то делаем с тем значением что получаем
}
void OnDisable(){
    yourScriptWithEvent.GetAxisX -= AxisX;
    yourScriptWithEvent.GetAxisY -= AxisY;
}
→ Ссылка