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

相关推荐
旧物有情17 小时前
游戏开发常用架构 #MVP,MVC
游戏·unity·架构·mvc
勇踏前人未索之境19 小时前
Unity打包运行于鸿蒙手机
unity·智能手机·harmonyos
玖玥拾20 小时前
Unity 3D 笔记(十一)UI 框架进阶:栈弹窗交互、BasePanel 基类虚方法、DoTween 界面动画
笔记·3d·unity
郝学胜-神的一滴1 天前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl
xcLeigh2 天前
Unity基础:GameObject与Component——Unity核心架构思想彻底理解
unity·教程·component·gameobject
郝学胜-神的一滴2 天前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
weixin_424294673 天前
Unity的测试Edit Mode和Play Mode,有什么区别?
unity
玖玥拾3 天前
Unity 3D 笔记(八)ScrollRect 滚动视图、NavMesh 自动寻路系统
笔记·3d·unity
淡海水4 天前
06-04-YooAsset源码-Unity加密解密服务
前端·unity·性能优化·c#·游戏引擎·yooasset