Естественно, всё как обычно.
Я в своем проекте делал так - у меня срабатывал ивент на анимации, дергался скрипт с персонажа, в этом скрипте я обращался к singleton контроллеру (в моем случае это был soundController) я передавал в него имя объекта который передал анимацию и собственно в звуковом контроллере я получал нужный мне звук для проигрывания и проигрывал его.
GetSound это generic метод в моем звуковом контроллере, который возвращает мне ScriptableObject где у меня описана моя пушка, в том числе там назначены звуки выстрела, перезарядки и т.п, я получаю этот объект и вызываю нужный мне звук уже в том методе который сработал когда был event в анимации.
OnShot() метод как раз дергается непосредственно анимацией, в нем я иду в контроллер за нужным звуком.