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

相关推荐
mxwin8 小时前
Unity Shader 半透明物体为什么不能写入深度缓冲?
unity·游戏引擎·shader
晚枫歌F9 小时前
三层时间轮的实现
网络·unity·游戏引擎
咸鱼永不翻身10 小时前
Lua脚本事件检查工具
unity·lua·工具
leo__52012 小时前
单载波中继系统资源分配算法MATLAB仿真程序
算法·matlab·unity
努力长头发的程序猿13 小时前
Unity使用ScriptableObject序列化资源
unity·游戏引擎
mxwin13 小时前
Unity Shader 手写基于 PBR 的 URP Lit Shader 核心光照计算
unity·游戏引擎·shader
小贺儿开发13 小时前
Unity3D 智能云端数字标牌系统
unity·阿里云·人机交互·视频·oss·广告·互动
魔士于安14 小时前
Unity windows 同步 异步 打开文件文件夹工具
游戏·unity·游戏引擎·贴图·模型
魔士于安15 小时前
unity lowpoly 风格 城市 建筑 道路 交通标志
游戏·unity·游戏引擎·贴图·模型
mxwin15 小时前
Unity GPU Shader 性能优化指南
unity·游戏引擎·shader