//-------------------------------------------------------- 
 | 
//    [Author]:           玩个游戏 
 | 
//    [  Date ]:           Sunday, December 10, 2017 
 | 
//-------------------------------------------------------- 
 | 
using UnityEngine; 
 | 
using System.Collections; 
 | 
using UnityEngine.UI; 
 | 
using System; 
 | 
  
 | 
  
 | 
    public class FrameEffect : 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]; 
 | 
            } 
 | 
        } 
 | 
  
 | 
    } 
 |