Перейти к основному содержимому

Animator Binders

Биндеры для управления параметрами Animator.


Общий принцип

Все Animator-биндеры наследуют AnimatorSetParameterBinder<T> и:

  1. Принимают имя параметра Animator (ParameterName) в Inspector
  2. Устанавливают параметр через Animator.SetBool/SetFloat/SetInt
  3. Проверяют CanExecute — по умолчанию Target.gameObject.activeInHierarchy
  4. Оптимизируют: не вызывают Set, если текущее значение уже совпадает

Обратная привязка (OneWayToSource)

При OneWayToSource Animator-биндеры предоставляют Action<T> или IRelayCommand<T> обратно во ViewModel, позволяя вызывать анимации из ViewModel.

Режимы: OneWay, OneTime, OneWayToSource (TwoWay запрещён).


AnimatorSetBoolBinder

Привязка Animator.SetBool.

СвойствоОписание
ParameterNameИмя bool-параметра в Animator
_converterОпциональный конвертер значения (например, BoolInvertConverter)
[ViewModel]
public partial class CharacterViewModel
{
[OneWayBind] private bool _isRunning;
// Привяжите к AnimatorSetBoolBinder с ParameterName = "IsRunning"
}

AnimatorSetFloatBinder

Привязка Animator.SetFloat.

СвойствоОписание
ParameterNameИмя float-параметра в Animator
ConverterIConverter<float, float> (опционально)
[ViewModel]
public partial class CharacterViewModel
{
[OneWayBind] private float _speed;
// Привяжите к AnimatorSetFloatBinder с ParameterName = "Speed"
}

AnimatorSetIntBinder

Привязка Animator.SetInteger.

СвойствоОписание
ParameterNameИмя int-параметра в Animator
ConverterIConverter<int, int> (опционально)

AnimatorSetTriggerBinder

Привязка Animator.SetTrigger. Работает иначе — только OneWayToSource. Парный AnimatorResetTriggerBinder вызывает ResetTrigger: взведённый и не сработавший триггер иначе остаётся активным.

Предоставляет Action или IRelayCommand во ViewModel для вызова триггера:

[ViewModel]
public partial class CharacterViewModel
{
[OneWayToSourceBind] private IRelayCommand _jumpTrigger;
// или: [OneWayToSourceBind] private Action _jumpTrigger;

public void Jump()
{
_jumpTrigger?.Execute(); // → Animator.SetTrigger("Jump")
}
}

Режим: только OneWayToSource.


См. также