Unity3D Animator.StringToHash - PullRequest
       9

Unity3D Animator.StringToHash

0 голосов
/ 07 апреля 2020

У меня есть проблема, которую я пытался решить в последние 2 дня, но не мог с собой справиться.

Я работаю над игрой, в которой у NP C есть прикрепленный аниматор. и нужно получить доступ к его параметрам.

Я устанавливаю параметр String в виде пустой строки

[SerializeField] string         _parameter = "";

и в качестве частного поля я устанавливаю:

int             _parameterHash= -1;

В my Start () я сохранил ссылку на StateMachine

    _stateMachine = transform.root.GetComponentInChildren<AIStateMachine> ();

Теперь, в моем Unity, я установил 3 коллайдера на NP C, который будет сталкиваться с игроком в определенный момент времени и генерировать урон Для этого в параметре NP C я поставил - RightHand - LeftHand - Mouth

То же наименование в параметрах аниматора

Сторона кода, в методе запуска я объявил:

_parameterHash = Animator.StringToHash (_parameter); 

Чтобы преобразовать переменную параметра в код ha sh и передать результат как _parameterHa sh в:

if (col.gameObject.CompareTag ("Player") && _animator.GetFloat(_parameterHash) >0.9f)
{
    if (GameSceneManager.instance && GameSceneManager.instance.bloodParticles) 
    {
        ParticleSystem system = GameSceneManager.instance.bloodParticles;

        // Temporary Code
        system.transform.position = transform.position;
        system.transform.rotation = Camera.main.transform.rotation;

        system.simulationSpace = ParticleSystemSimulationSpace.World;
        system.Emit (_bloodParticlesBurstAmount);
    }
    Debug.Log ("Player being Damaged ");
}

Но вот где у меня проблема. Если я нажимаю Play, я получаю предупреждение о том, что параметр Ha sh не существует.

Поэтому, чтобы убедиться, что в моем коде нет опечаток, я жестко закодировал StringtoHa sh с помощью:

_parameterHash = Animator.StringToHash ("LeftHand"); 

Таким образом, все работает просто отлично. Я получаю удар по NP C, и код воспроизводит эффект частиц.

Поэтому я верю, что в runTime моя строка параметров остается пустой, поэтому он не может найти код ha sh.

Кто-нибудь может исправить меня, если я ошибаюсь, и помочь мне выяснить, как я могу решить эту проблему?

Идея состоит в том, чтобы иметь группу одинаковых NP C, обращающихся к одному и тому же аниматору. и с таким же поведением.

Большое спасибо за ваше время и помощь, ребята.

...