using System.Collections; using System.Collections.Generic; using UnityEngine; namespace WK.Rendering { public class SpriteAnimationController : MonoBehaviour { #region 序列化 [SerializeField] private SpriteAnimation m_SpriteAnimation; [SerializeField] private bool m_AutoPlay; #endregion #region 公共字段 public bool playing { get { return m_IsPlaying; } set { m_IsPlaying = value; } } #endregion #region 私有字段 private SpriteRenderer m_SpriteRenderer; private bool m_IsPlaying; #endregion private void Awake() { m_SpriteRenderer = GetComponent(); StartCoroutine(CoPlayAnimation(m_SpriteAnimation.duration)); m_IsPlaying = true; m_SpriteRenderer.sprite = m_SpriteAnimation.sprites[0]; } IEnumerator CoPlayAnimation(float duration = 1f) { int index = 0; while (true) { if (!playing) { yield return null; continue; } m_SpriteRenderer.sprite = m_SpriteAnimation.sprites[index]; yield return new WaitForSeconds(m_SpriteAnimation.duration / m_SpriteAnimation.sprites.Count); index++; index %= m_SpriteAnimation.sprites.Count; } } } }