|
|
@@ -0,0 +1,65 @@
|
|
|
+using UnityEngine;
|
|
|
+using Spine;
|
|
|
+using Spine.Unity;
|
|
|
+
|
|
|
+public class SkeletonDataReader : MonoBehaviour
|
|
|
+{
|
|
|
+ private SkeletonMecanim skeletonMecanim;
|
|
|
+ private Enemy ene;
|
|
|
+
|
|
|
+ [ContextMenu("Play")]
|
|
|
+ private void WriteData()
|
|
|
+ {
|
|
|
+ ReadData();
|
|
|
+ ene = GetComponentInParent<Enemy>();
|
|
|
+ ene.totalBeRepelValue = 30;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ReadData()
|
|
|
+ {
|
|
|
+ skeletonMecanim = GetComponent<SkeletonMecanim>();
|
|
|
+ if (skeletonMecanim == null)
|
|
|
+ {
|
|
|
+ Debug.LogError("SkeletonMecanim component not found!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取 SkeletonDataAsset
|
|
|
+ SkeletonDataAsset skeletonDataAsset = skeletonMecanim.SkeletonDataAsset;
|
|
|
+ if (skeletonDataAsset == null)
|
|
|
+ {
|
|
|
+ Debug.LogError("SkeletonDataAsset not found!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取 SkeletonData
|
|
|
+ SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(true);
|
|
|
+ if (skeletonData == null)
|
|
|
+ {
|
|
|
+ Debug.LogError("SkeletonData not found!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 遍历所有动画
|
|
|
+ foreach (var animation in skeletonData.Animations)
|
|
|
+ {
|
|
|
+ string animationName = animation.Name;
|
|
|
+ float animationDuration = animation.Duration;
|
|
|
+ Debug.Log($"动画名称: {animationName}, 动画时长: {animationDuration}");
|
|
|
+
|
|
|
+ // 遍历动画中的事件
|
|
|
+ foreach (var timeline in animation.Timelines)
|
|
|
+ {
|
|
|
+ if (timeline is EventTimeline eventTimeline)
|
|
|
+ {
|
|
|
+ foreach (var eventFrame in eventTimeline.Events)
|
|
|
+ {
|
|
|
+ string eventName = eventFrame.Name;
|
|
|
+ float eventTime = eventFrame.Time;
|
|
|
+ Debug.Log($"事件名称: {eventName}, 事件时间: {eventTime}, 所在动画: {animationName}");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|