//-------------------------------------------------------- 
 | 
//    [Author]:           第二世界 
 | 
//    [  Date ]:           Sunday, December 10, 2017 
 | 
//-------------------------------------------------------- 
 | 
using UnityEngine; 
 | 
using System.Collections; 
 | 
using UnityEngine.UI; 
 | 
using System; 
 | 
  
 | 
  
 | 
namespace StartAot  
 | 
{  
 | 
    public class FrameEffectEx : MonoBehaviour  
 | 
    {  
 | 
        [SerializeField] Image m_Behaviour;  
 | 
        [SerializeField] Sprite[] m_Sprites;  
 | 
  
 | 
        float interval = 0.1f;  
 | 
        int index = 0;  
 | 
        float timer = 0f;  
 | 
        float tempSumTime = 1f;  
 | 
  
 | 
        [SerializeField] float onceTime = 1f;  
 | 
        [SerializeField] float sumTime = 1f;  
 | 
        [SerializeField] int aniIndex = 0;  
 | 
        public bool loop = true;  
 | 
  
 | 
        public event Action<int> CompleteAct;  
 | 
  
 | 
        private void OnEnable()  
 | 
        {  
 | 
            if (m_Sprites != null && m_Sprites.Length > 0)  
 | 
            {  
 | 
                interval = onceTime / m_Sprites.Length;  
 | 
                index = 0;  
 | 
                timer = 0f;  
 | 
                tempSumTime = sumTime;  
 | 
  
 | 
                m_Behaviour.overrideSprite = m_Sprites[index];  
 | 
            }  
 | 
        }  
 | 
  
 | 
        private void LateUpdate()  
 | 
        {  
 | 
            timer += Time.deltaTime;  
 | 
            tempSumTime -= Time.deltaTime;  
 | 
  
 | 
            if (m_Sprites == null || m_Sprites.Length == 0)  
 | 
            {  
 | 
                return;  
 | 
            }  
 | 
  
 | 
            if (tempSumTime > 0)  
 | 
            {  
 | 
                if (timer > interval)  
 | 
                {  
 | 
                    m_Behaviour.overrideSprite = m_Sprites[index];  
 | 
                    index = (++index) % m_Sprites.Length;  
 | 
                    timer -= interval;  
 | 
                }  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                if (loop)  
 | 
                {  
 | 
                    tempSumTime = sumTime;  
 | 
                }  
 | 
  
 | 
                if (CompleteAct != null)  
 | 
                {  
 | 
                    CompleteAct(aniIndex);  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
        public void SetSprites(Sprite[] sprites, float _totalTime)  
 | 
        {  
 | 
            m_Sprites = sprites;  
 | 
            onceTime = _totalTime;  
 | 
            sumTime = _totalTime;  
 | 
            if (m_Sprites != null && m_Sprites.Length > 0)  
 | 
            {  
 | 
                interval = onceTime / m_Sprites.Length;  
 | 
                index = 0;  
 | 
                timer = 0f;  
 | 
                tempSumTime = sumTime;  
 | 
  
 | 
                m_Behaviour.sprite = m_Sprites[index];  
 | 
                m_Behaviour.overrideSprite = m_Sprites[index];  
 | 
            }  
 | 
        }  
 | 
  
 | 
    }  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |