Skip to content

Commit 52a023a

Browse files
committed
fix(SkeletonDataAssetExtension): 修复骨骼数据替换时的状态问题
清除组件状态并强制初始化以确保骨骼数据正确加载
1 parent a900f36 commit 52a023a

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

Runtime/Extension/SkeletonDataAssetExtension.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,18 @@ public static SkeletonAnimation AddOrReplace(this GameObject gameObject, Skeleto
5555
// 将 GameObject 名称同步为资源名称,方便调试
5656
gameObject.name = skeletonDataAsset.name;
5757
var component = gameObject.GetComponent<SkeletonAnimation>();
58+
5859
if (component == null)
5960
{
6061
// 不存在则自动添加新组件
6162
return SkeletonRenderer.AddSpineComponent<SkeletonAnimation>(gameObject, skeletonDataAsset, quiet);
6263
}
6364

65+
component.ClearState();
6466
// 已存在则直接替换骨骼数据并刷新
6567
component.skeletonDataAsset = skeletonDataAsset;
66-
skeletonDataAsset.GetSkeletonData(false); // 强制同步数据
68+
component.Initialize(true, true);
69+
skeletonDataAsset.GetSkeletonData(true); // 强制同步数据
6770
OnChangeSpine(component, animationName, isLoop);
6871
return component;
6972
}
@@ -114,6 +117,8 @@ public static void OnChangeSpine(this SkeletonAnimation skeletonAnimation, strin
114117
skeletonAnimation.skeleton.SetSkin(skin);
115118
skeletonAnimation.skeleton.SetSlotsToSetupPose(); // 强制刷新到初始姿态
116119
}
120+
121+
skeletonAnimation.LateUpdate();
117122
}
118123
}
119124
}

0 commit comments

Comments
 (0)