Animation Layers
就像 Unity 的 Animator Controller 一样,我们也可以在 Sequine Player 中添加 Layer。如果你不熟悉 Animator Controller 的 Layer,可以参考下面的示例。

通过使用 Layer,我们可以针对不同的身体部位管理动画,实现混合,甚至覆盖。
在 Sequine Player 中,如果想添加更多 Layer,可以点击 Layers 下拉菜单。

每个 Layer 的属性:
- Name:该 Layer 的名称。
- Weight:该 Layer 的权重。如果权重为 1,则完全应用;如果为 0,则完全不应用。可以使用 0 到 1 之间的数值与之前的 Layer 计算结果进行混合。
- Mask:用于指定该 Layer 影响的身体部位。如果你还不熟悉,可以查看 Avatar Mask。
- Blending:指定动画的应用方式。
- Override:使用当前 Layer 的动画,替换之前 Layer 的动画。
- Additive:将当前 Layer 的动画叠加到之前 Layer 的动画之上。要使 Additive 混合成功,该 Layer 的动画必须包含与之前 Layer 相同的属性。
我们可以通过指定 Layer 的 Index 来在特定 Layer 上播放动画。如果播放动画时没有指定 Layer,则默认使用 Index 0,也就是 Base Layer。
通过脚本在指定 Layer 上播放动画
要在指定的 Layer 上播放动画,可以使用之前的 PlayAnimationClip 或 PlayAction 方法,只需在参数最前面加入 Layer 的 Index 即可。示例如下:
using UnityEngine;
using Calcatz.Sequine;
public class PlayOnStart : MonoBehaviour {
public SequinePlayer sequinePlayer;
public int layer = 2;
public AnimationClip clipToPlay;
void Start() {
sequinePlayer.PlayAnimationClip(layer, clipToPlay, SequinePlayer.defaultAnimationConfig);
}
}
在 Sequine Flow 中在指定 Layer 上播放动画
如果你已经阅读过 使用配置播放动画 章节,那么如何在指定 Layer 上播放动画应该非常直观。只需要在 Configurations 折叠栏中的 Layer 字段里填写对应的 Layer Index 即可。
