using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GudieAnimationManager : MonoBehaviour { private Animator _animator; private string _currName; private List _actionList = new List(); public Animator Animator { get { if (_animator == null) { _animator = transform.GetComponentInChildren(); } return _animator; } } private void Awake() { _animator = transform.GetComponentInChildren(); } public void Play(string name) { Animator.CrossFade(name, 0.5f); _currName = name; } public void PlayCurrentActionList(List actionList) { _actionList = actionList; YogaManager.Instance.ActionIndex = 0; Play(Enum.GetName(typeof(AvatarAction), _actionList[YogaManager.Instance.ActionIndex])); } private void Update() { if (string.IsNullOrEmpty(_currName)) return; //当未达到指标且动画播放完毕时,重新播放 if (Animator.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1.0f) { //如果列表动画index小于列表长度,播放下一个动画 YogaManager.Instance.ActionIndex++; //如果列表动画index大于等于列表长度,说明动画播放完毕,停止播放 if (YogaManager.Instance.ActionIndex >= YogaManager.Instance.LevelData.Actions.Count) { Stop(); return; } Play(Enum.GetName(typeof(AvatarAction), _actionList[YogaManager.Instance.ActionIndex])); } } public void Stop() { Animator.StopPlayback(); } }