如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)

如何在Spine动画中插入一张图片(Spine动画图层先后顺序处理)

项目开发过程中,遇到一个需求,需要将美术给到的spine动画做层级处理。简单来说,如下图:需要将一张桌子图片的层级置于手的后面,身体的前面。
如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)_第1张图片
目前根据spine提供的方法,只有3D物体的spine才能做到这种效果。也就是说SkeletonGraphic(UGUI)是没办法做到的。

实现方法:
1.新建一个SkeletonAnimation物体,给物体挂上对应的spine动画文件。
2.点击下图按钮-》选择Add Skeleton Render Separator如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)_第2张图片
3.选择之后,会看到在Inspector视图下新增加了一个Skeleton Render Separator脚本。点击箭头中的加号,添加你需要做层级处理的骨骼,接着点击Add the mission renders(7)按钮。
如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)_第3张图片
4.上述操作之后会看到你的动画角色物体下会多出几个子物体,这些物体对应着不同的骨骼。可以通过调整layer来设置层级。
如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)_第4张图片

上述是通过手动方式设置角色层级,也可以通过代码的方式进行处理。

using UnityEngine;
using Spine.Unity;

public class AddSkeletonRenderSeparator : MonoBehaviour
{

SkeletonAnimation _skeletonAnimation;

private void Start()
{
    _skeletonAnimation = transform.GetComponent();

    SkeletonRenderSeparator srs = new SkeletonRenderSeparator();
    srs.SkeletonRenderer = _skeletonAnimation;

    srs.SkeletonRenderer.FindAndApplySeparatorSlots("head", false, true);
    srs.SkeletonRenderer.FindAndApplySeparatorSlots("torso", false, true);
    srs.SkeletonRenderer.FindAndApplySeparatorSlots("L-arm", false, true);
    srs.SkeletonRenderer.FindAndApplySeparatorSlots("R-arm", false, true);
    srs.SkeletonRenderer.FindAndApplySeparatorSlots("L-leg", false, true);
    srs.SkeletonRenderer.FindAndApplySeparatorSlots("R-leg", false, true);

    srs = SkeletonRenderSeparator.AddToSkeletonRenderer(srs.SkeletonRenderer, 0, 0, 5, 5);

    //设置每个骨骼的层级
    srs.partsRenderers[0].MeshRenderer.sortingOrder = 3;
}

}

你可能感兴趣的:(Spine动画,unity)