Unity动画状态机的层与遮罩

两个动画层,base和mask,如何实现在移动状态时使用遮罩动画,待机状态时使用同一个(没有遮罩)动画。
我的设想是在2个层中都加入这个动画,然后在代码中加入移动和非移动时SetLayerWeight(),
但是失败了,它始终只能播放base层的动画.

在Unity中实现动画层的遮罩可以通过设置动画层的权重来实现。

在两个动画层中分别添加你的动画,然后在代码中使用Animator.SetLayerWeight(layerIndex, weight)方法来设置动画层的权重,从而控制动画层的混合。在移动状态时,设置遮罩动画层的权重为1,设置base动画层的权重为0,在待机状态时,则相反。

例如:

Animator animator;
int baseLayer = 0;
int maskLayer = 1;

void Update() {
    if (isMoving) {
        animator.SetLayerWeight(baseLayer, 0);
        animator.SetLayerWeight(maskLayer, 1);
    } else {
        animator.SetLayerWeight(baseLayer, 1);
        animator.SetLayerWeight(maskLayer, 0);
    }
}

请确保在Animator组件中的对应动画层的名称正确设置,并且每个动画层都设置为独立播放,而不是共享同一个状态机。