Хэш runtimeAnimationController не найден в анимации - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть скрипт, который сообщает мне, какой анимационный клип runtimeAnimationController воспроизводит для персонажа.

Я использую этот скрипт без каких-либо проблем с некоторыми персонажами, но теперь у меня есть один персонаж, в котором хэштекущей анимации не найдено в списке анимационных клипов.

Я не знаю, в чем причина этой проблемы.

Я думал, что мой код абсолютно безопасен.Когда я создаю точку останова в Visual Studio и проверяю список клипов анимации, я вижу, что воспроизводимый в настоящий момент хэш действительно отсутствует в списке.

Хэш текущей воспроизводимой анимации также не равен 0, и это делаетизменить, когда контроллер анимации воспроизводит другую анимацию.

Кто-нибудь видит, почему может возникнуть условие, когда хеш не найден?

Я имею в виду, что при воспроизведении анимации эта анимация ДОЛЖНА бытьв списке анимационные клипы, верно?

Большое спасибо за помощь!

private void pTellAnim()
{

    AnimatorStateInfo stateInfo = _animator.GetCurrentAnimatorStateInfo(0);
    int iCurrentAnimationHash = stateInfo.shortNameHash;

    foreach (AnimationClip nClip in _animator.runtimeAnimatorController.animationClips)
    {
        int iHash = Animator.StringToHash(nClip.name);
        if (iHash == iCurrentAnimationHash)
        {
            Debug.Log("Currently playing " + nClip.name + "\n");
            return;
        }
    }

    Debug.Log("Clip not found for hash " + iCurrentAnimationHash.ToString() + "!!!!\n");
}

1 Ответ

0 голосов
/ 01 февраля 2019

Вы сравниваете хеш AnimatorStateInfo с хешами клипов.Вместо этого вы должны использовать _animator.GetCurrentAnimatorClipInfo(0) и проверить массив AnimatorClipInfo объектов, которые он возвращает.У каждого из них будет свойство .clip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...