欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity Spine SkeletonGraphic 动画重复播放 过度残影Bug 解决方案

程序员文章站 2024-03-16 23:14:28
...

Unity Spine SkeletonGraphic 动画重复播放 过度残影Bug 解决方案

不推荐使用SetToSetupPose和Setup Pose相关,代码直接贴上

/// <summary>
/// Spine播放设置
/// </summary>
/// <param name="trackIndex">填写0</param>
/// <param name="animationName">动画名</param>
/// <param name="loop">是否循环播放</param>
public void SetAnimation(int trackIndex, string animationName, bool loop)
{
	state.ClearTracks();
	Animation animation = SkeletonData.FindAnimation(animationName);
	if (animation == null) throw new ArgumentNullException("animation", "animation cannot be null.");
	state.SetAnimation(trackIndex, animation, loop);
}

说下其它的,获取Spine信息

SkeletonGraphic spine = this.GetComponent<SkeletonGraphic>();
spine.AnimationState.Tracks.Items[0].TrackTime;//播放动画 当前时间(可读可写)
spine.AnimationState.Tracks.Items[0].AnimationTime;//播放动画 当前时间(只读)
spine.AnimationState.Tracks.Items[0].AnimationEnd;//动画 总长时间(可读可写)

判断Spine是否存在包含动画名

AnimationStateData data = spine.AnimationState.Data;
string getName = anim[Random.Range(0, anim.Length)];
Spine.Animation animation = data.SkeletonData.FindAnimation(getName);
//如果没有存在该动画名 内部会抛出异常
if (animation != null)
{
    SpineHelper.Play(obj, getName, true);
}

Spine设置

spine.freeze = true;//播放停止
spine.timeScale = 1;//播放速度

有什么问题可以找我 QQ513378627
另外,不要问太简单的问题,我没空,最好自己百度