在使用FGUI按钮事件切换动画资源文件时出现一帧的骨骼设置状态问题,可能是因为在切换SkeletonDataAsset时,SkeletonAnimation组件的状态没有及时更新。根据提供的代码,您可以尝试在切换SkeletonDataAsset后立即调用Initialize(true)
方法来重新初始化SkeletonAnimation组件,这样可以确保所有引用和状态都被正确更新。
在ReloadSkeletonAsset
方法中,您已经调用了Initialize(true)
,这应该是正确的做法。然而,您可能需要确保在调用Initialize(true)
之前,所有相关的状态和引用都被清除,例如使用ClearState()
方法清除当前的动画状态。
如果问题仍然存在,您可以尝试在Initialize(true)
之后立即设置动画,以确保动画状态在初始化后立即被应用。
public void ReloadSkeletonAsset(int id)
{
SkeletonDataAsset skeleton;
string animation;
if(id == 1)
{
skeleton = Sword;
animation = "n-b0029-防守-姿势循环";
}
else
{
skeleton = Wand;
animation = "h-b0029-防守-姿势循环";
}
if (skeleton != null)
{
var skeletonAnimation = body.GetComponent<SkeletonAnimation>();
skeletonAnimation.ClearState();
skeletonAnimation.skeletonDataAsset = skeleton;
skeletonAnimation.Initialize(true);
skeletonAnimation.Skeleton.SetSkin("No1");
PlayAnimation(animation);
}
}
确保在Initialize(true)
之后立即调用PlayAnimation
方法,以便在初始化后立即应用动画。