Unity 使用Spine动画切换时有残影

问题描述:

最近在用spine动画时发现,有时候切换动画的时候会显示一个动画残影很影响体验 所以找了半天才找到解决方案

解决办法

在Unity的Project下找到Spine动画的SkeletonData文件,选中该文件之后在Inspector面板上找到Animationgs下面有一个"Setup Pos",这个按钮可以将骨骼(bones)、资源槽(slots)或两者重置为装配动作(setup pose)。它与调用`setBonesToSetupPose` 或 `setSlotsToSetupPose` 是一样的, SetToSetupPose是将骨骼和插槽全部重置为装配动作

直接上代码

cs 复制代码
private SkeletonGraphic _skeletonGraphic;
private AnimationState _spineAnimationState;

private void Start()
{
    _skeletonGraphic = GetComponent<SkeletonGraphic>();
    _spineAnimationState = _skeletonGraphic!.AnimationState; 
}

public void Clear(int trackIndex, string animationName, bool isLoop = false)
{
    _skeletonGraphic.Skeleton.SetToSetupPose();
    _spineAnimationState.SetAnimation(trackIndex, animationName, isLoop);
    _skeletonGraphic.Update(0);
    _skeletonGraphic.LateUpdate();
}

_skeletonGraphic.Skeleton.SetToSetupPose(); // 这个是重置骨骼和插槽为装配动作

_spineAnimationState.SetAnimation(trackIndex, animationName, isLoop); //设置一个默认动画

// 强行执行一次Update, 因为执行上述代码时,可能skeleton自身的Update已经执行完毕,这样要到下一次Update才会刷新Spine。
// 强行执行一次Update,就可以立马刷新Spine状态。

_skeletonGraphic.Update(0);

_skeletonGraphic.LateUpdate();// 强制更新一下网格

然后就可以看到不会有残影了
官方文档:https://zh.esotericsoftware.com/spine-using-runtimes/#Animation-changes

相关推荐
SmalBox2 小时前
【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
unity·渲染
黑客飓风16 小时前
Spine动画入门
spine
SmalBox21 小时前
【渲染流水线】[几何阶段]-[图元装配]以UnityURP为例
unity·渲染
霜绛1 天前
Unity:GUI笔记(一)——文本、按钮、多选框和单选框、输入框和拖动条、图片绘制和框绘制
笔记·学习·unity·游戏引擎
谷宇.1 天前
【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
游戏·unity·c#·unity3d·游戏开发·游戏编程
17岁的勇气1 天前
Unity Shader unity文档学习笔记(十九):粘土效果,任意网格转化成一个球(顶点动画,曲面着色器)
笔记·学习·unity·图形渲染·顶点着色器·曲面着色器
benben0442 天前
《Unity Shader入门精要》学习笔记一
unity·shader
YF云飞2 天前
Unity图片优化与比例控制全攻略
游戏·unity·游戏引擎·游戏程序·个人开发
SmalBox2 天前
【渲染流水线】[几何阶段]-[几何着色]以UnityURP为例
unity·渲染
★YUI★3 天前
学习游制作记录(背包UI以及各种物品的存储)8.12
学习·游戏·ui·unity·c#