| | |
| | | |
| | | using System; |
| | | using Spine; |
| | | using Spine.Unity; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | |
| | | private int skinID; |
| | | protected SkeletonGraphic skeletonGraphic; |
| | | |
| | | protected Spine.AnimationState spineAnimationState; |
| | | public Spine.AnimationState spineAnimationState; |
| | | private GameObject instanceGO; |
| | | |
| | | public Action onComplete; |
| | |
| | | if (isLh) |
| | | { |
| | | var skinConfigTmp = HeroSkinConfig.Get(skinID); |
| | | if (skinConfigTmp != null && skinConfigTmp.Tachie.Contains("SkeletonData")) |
| | | if (skinConfigTmp != null && skinConfigTmp.Tachie.IsSpine()) |
| | | { |
| | | skeletonGraphic.enabled = true; |
| | | } |
| | |
| | | |
| | | //立绘特殊处理,没有spine动画的改用图片 |
| | | var lhImg = this.AddMissingComponent<RawImage>(); |
| | | if (!skinConfig.Tachie.Contains("SkeletonData")) |
| | | if (!skinConfig.Tachie.IsSpine()) |
| | | { |
| | | //图片替换 |
| | | lhImg.SetTexture2DPNG(skinConfig.Tachie); |
| | |
| | | spineAnimationState.Complete += OnAnimationComplete; |
| | | } |
| | | |
| | | |
| | | public bool HasAnimation(string motionName) |
| | | { |
| | | return skeletonGraphic != null && skeletonGraphic.Skeleton != null && skeletonGraphic.Skeleton.ContainsMotion(motionName); |
| | | } |
| | | |
| | | |
| | | protected void OnDestroy() |
| | |
| | | /// <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); |
| | | } |
| | | |
| | | // 播放第一个动画(作为默认动画) |