I did it using Animator Override Controller
private AnimatorOverrideController overrideController;
private void Awake()
{
overrideController = new AnimatorOverrideController(animator.runtimeAnimatorController);
animator.runtimeAnimatorController = overrideController;
}
public void PlayerBaseAttack()
{
if (currentAttackType != null)
{
var pair = attackAnimationList.Find(p => p.attackType == currentAttackType);
if (pair != null && pair.animations.Length > 0)
{
AnimationClip chosenClip = pair.animations[Random.Range(0, pair.animations.Length)];
overrideController["Attack"] = chosenClip;
animator.SetTrigger("Attack");
}
}
}