yyl
昨天 8d77144cfb756529507dc6927dcdcfd9f4a30750
Main/System/Hero/UIHeroController.cs
@@ -1,5 +1,6 @@
using System;
using Spine;
using Spine.Unity;
using UnityEngine;
using UnityEngine.UI;
@@ -10,7 +11,7 @@
   private int skinID;
   protected SkeletonGraphic skeletonGraphic;
   protected Spine.AnimationState spineAnimationState;
   public Spine.AnimationState spineAnimationState;
   private GameObject instanceGO;
   public Action onComplete;
@@ -26,7 +27,7 @@
            if (isLh)
            {
               var skinConfigTmp = HeroSkinConfig.Get(skinID);
               if (skinConfigTmp != null && skinConfigTmp.Tachie.Contains("SkeletonData"))
               if (skinConfigTmp != null && skinConfigTmp.Tachie.IsSpine())
               {
                  skeletonGraphic.enabled = true;
               }
@@ -60,7 +61,7 @@
         //立绘特殊处理,没有spine动画的改用图片
         var lhImg = this.AddMissingComponent<RawImage>();
         if (!skinConfig.Tachie.Contains("SkeletonData"))
         if (!skinConfig.Tachie.IsSpine())
         {
            //图片替换
            lhImg.SetTexture2DPNG(skinConfig.Tachie);
@@ -150,7 +151,10 @@
      spineAnimationState.Complete += OnAnimationComplete;
   }
   public bool HasAnimation(string motionName)
   {
      return skeletonGraphic != null && skeletonGraphic.Skeleton != null && skeletonGraphic.Skeleton.ContainsMotion(motionName);
   }
   protected void OnDestroy()
@@ -171,15 +175,15 @@
   /// <param name="motionName">动作名</param>
   /// <param name="loop">循环</param>
   /// <param name="replay">如果相同动作是否再次重播,比如跑步重播就会跳帧不顺滑</param>
   public virtual void PlayAnimation(string motionName, bool loop = false, bool replay = true)
   public virtual TrackEntry PlayAnimation(string motionName, bool loop = false, bool replay = true)
   {
      if (spineAnimationState == null) return;
      if (spineAnimationState == null) return null;
      if (GetCurrentAnimationName() == motionName && !replay)
         return;
         return null;
      // 直接使用 ToString() 而不是调用 GetAnimationName
      spineAnimationState.SetAnimation(0, motionName.ToString(), loop);
      return spineAnimationState.SetAnimation(0, motionName.ToString(), loop);
   }
   // 播放第一个动画(作为默认动画)