using UnityEngine; using UnityEngine.Events; namespace WS { [ObjectSystem] public class AnimationComponentAwakeSystem : AwakeSystem { public override void Awake(AnimationComponent self, Animation a) { self.Awake(a); } } [ObjectSystem] public class AnimationComponentUpdateSystem : UpdateSystem { public override void Update(AnimationComponent self) { self.Update(); } } ///判断动画播放完成 public class AnimationComponent : WSComponent { ///动画组件 private Animation Anim; ///回调 private UnityAction OnCallback; ///播放 private bool isplay; public void Awake(Animation anim) { Anim = anim; } /// 播放动画 /// 名称 /// 回调 public void PlayAnim(string name, UnityAction action) { Anim.Play(name); OnCallback = action; isplay = true; } public void Update() { if (Anim != null) { if (isplay) { if (!Anim.isPlaying) { OnCallback?.Invoke(); isplay = false; } } } } public override void Dispose() { base.Dispose(); Anim = null; OnCallback = null; } } }