Animator Unity. Не присваивается значение полям

После переданного значения CastTime в StartAnimation, оно не присваивается в поле _castTime. Это работает, потому что тестили на других персонажах, но именно на одном оно почему-то слетает.

 public class WaitingBehaviour : StateMachineBehaviour
{
    private Animator _currentAnimator;
    private float _castTime = -1.0f;
    private bool _isStarted;
    private bool _isStarted = false;
    private float _waitingTime = 0.0f;
    private float _nextClipLength;
    private int _attackHash = Animator.StringToHash("Attack");
    private int _attackTimeHash = Animator.StringToHash("Attacktime");
    private int _weaponTypeHash = Animator.StringToHash("WeaponType");


    public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo,
        int layerIndex)
    {
        //Странный баг с непередаваемым значением castTime
        //(Приравнивается в 65 строке)
        Debug.Log("Started "+ _castTime);
        _currentAnimator = animator;
        if (_castTime > 0)
        {
            _nextClipLength = animator.GetNextAnimatorClipInfo(layerIndex)[0].clip.length;
        }
        else
        {
            animator.SetFloat(_attackTimeHash, 0.0f);
            animator.SetBool(_attackHash, false);
            _isStarted = false;
        }
        animator.SetInteger(_weaponTypeHash, -1);
    }

    public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo,
        int layerIndex)
    {
        _castTime = -1;
        _isStarted = false;
    }
    public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo,
        int layerIndex)
    {
        if (_isStarted)
        {
            if (_waitingTime > 0)
            {
                _waitingTime = _castTime - _nextClipLength;
                Debug.Log("Update castTime "+ _castTime);
                Debug.Log("Update clipTime "+ _nextClipLength);
                animator.SetFloat(_attackTimeHash, _waitingTime);
            }
            else if (_waitingTime <= float.Epsilon)
            {
                animator.SetBool(_attackHash, false);
            }
        }

    }

    public void StartAnimation(Animator animator, float castTime, int weaponInt)
    {
        _castTime = castTime;
        if (!_isStarted)
        {
            if (_currentAnimator == null) _currentAnimator = animator;
            _waitingTime = castTime;
            animator.SetInteger(_weaponTypeHash, weaponInt);
            animator.SetBool(_attackHash, true);
            animator.SetFloat(_attackTimeHash, _waitingTime);
            Debug.Log(animator.GetInteger(_weaponTypeHash));
            _isStarted = true;
            Debug.Log("Starting "+ _castTime);
        }
    }
}

Отсюда можно понять, что в StartAnimation поле присваивается и в дебаге выводится все нормально, но вот в OnStateEnter выводится -1(то есть приравненное изначально к полю число).

Повторюсь, код рабочий, перетестил раз на 100. Логика одинаковая. Думаю, какой-то юнитовский баг.


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