using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; public class SPUM_AnimationController : MonoBehaviour { [Header("Character Animator")] [SerializeField] SPUM_Prefabs unit; [SerializeField] Animator animator => unit._anim; [Header("Animation Button Prefab")] [SerializeField] Button animationButtonPrefab; [SerializeField] Transform animationButtonParent; [Header("Animation Play Controller")] [SerializeField] Slider timeLineSlider; [SerializeField] Slider playSpeedSlider; [SerializeField] Text slidertimeLineInfo; [SerializeField] Text timeLineText; [SerializeField] Text playSpeedText; private void Start() { if(unit && timeLineSlider && playSpeedSlider){ Init(); unit.UnitTypeChanged.AddListener( ()=> { RemoveAllAnimationButtons(); InitAnimationButtons(); }); }else{ Debug.LogError("Animator or Slider Component Not Setup!"); } } private void Init(){ timeLineSlider.minValue = 0f; timeLineSlider.maxValue = 1f; timeLineText = timeLineSlider.transform.GetComponentInChildren(); timeLineSlider.onValueChanged.AddListener( x => { SetAnimationNormailzedTime(x); timeLineText.text = string.Format("{0:P0}", x); }); playSpeedSlider.minValue = 0; playSpeedSlider.maxValue = 20; playSpeedSlider.wholeNumbers = true; playSpeedText = playSpeedSlider.transform.GetComponentInChildren(); playSpeedSlider.onValueChanged.AddListener( x => { var AnimationSpeed = x * .1f; unit._anim.speed = AnimationSpeed; playSpeedText.text = string.Format("Speed x{0:0.0}", AnimationSpeed); }); playSpeedSlider.value = 10f; InitAnimationButtons(); } private void RemoveAllAnimationButtons(){ var animationButtons = animationButtonParent.GetComponentsInChildren