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

如何在Spine动画中插入一张图片(Spine动画图层先后顺序处理) 项目开发过程中,遇到一个需求,需要将美术给到的spine动画做层级处理。简单来说,如下图:需要将一张桌子图片的层级置于手的后面,身体的前面。
Spine动画|如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)
文章图片

目前根据spine提供的方法,只有3D物体的spine才能做到这种效果。也就是说SkeletonGraphic(UGUI)是没办法做到的。
实现方法:
1.新建一个SkeletonAnimation物体,给物体挂上对应的spine动画文件。
2.点击下图按钮-》选择Add Skeleton Render SeparatorSpine动画|如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)
文章图片

3.选择之后,会看到在Inspector视图下新增加了一个Skeleton Render Separator脚本。点击箭头中的加号,添加你需要做层级处理的骨骼,接着点击Add the mission renders(7)按钮。
Spine动画|如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)
文章图片

4.上述操作之后会看到你的动画角色物体下会多出几个子物体,这些物体对应着不同的骨骼。可以通过调整layer来设置层级。
Spine动画|如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)
文章图片

上述是通过手动方式设置角色层级,也可以通过代码的方式进行处理。
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动画|如何在spine动画中插入一张图片(Spine动画图层先后顺序处理)】}

    推荐阅读