New file |
| | |
| | | //-------------------------------------------------------- |
| | | // [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]; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |