目录
- 一、效果
- 二、需要动画插件DOTween
- 三、脚本
- 1.每个格子上的脚本文件
- 2.管理脚本文件
一、效果
二、需要动画插件DOTween
下载地址
三、脚本
1.每个格子上的脚本文件
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class MarqueeUIItem : MonoBehaviour { private RawImage m_RawImage; private string thisIndex; private Coroutine m_coroutine; private void Start() { m_RawImage = GetComponent<RawImage>(); thisIndex = transform.GetSiblingIndex().ToString(); } public void UpdateImageColorA() { KillDOTween(); m_RawImage.color = Color.white; m_coroutine= StartCoroutine(ShowUI()); } private IEnumerator ShowUI() { yield return new WaitForSeconds(0.1F); m_RawImage.DOColor(Color.clear, 1.5f).SetId(thisIndex); } public void KillDOTween() { if (DOTween.IsTweening(thisIndex)) { if (m_coroutine != null) { StopCoroutine(m_coroutine); } DOTween.Kill(thisIndex); } } }
2.管理脚本文件
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MarqueeUIManager : MonoBehaviour { [Header("时间间隔")] public float time_interval=0.05f; public RawImage m_firstImage; public RawImage[] m_allImage; private Coroutine m_LeftCor; private Coroutine m_RightCor; private void Start() { m_firstImage.color=Color.clear; for (int i = 0; i < m_allImage.Length; i++) { m_allImage[i].color=Color.clear; } } private void Update() { if (Input.GetKeyDown(KeyCode.L)) { LeftRotationUI(); } if (Input.GetKeyDown(KeyCode.R)) { RightRotationUI(); } } private void LeftRotationUI() { if (m_RightCor != null) { StopCoroutine(m_RightCor); } if(m_LeftCor!=null) { StopCoroutine(m_LeftCor); } m_LeftCor = StartCoroutine(LeftRoatation()); } private void RightRotationUI() { if (m_LeftCor != null) { StopCoroutine(m_LeftCor); } if (m_RightCor != null) { StopCoroutine(m_RightCor); } m_RightCor = StartCoroutine(RightRoatation()); } private IEnumerator LeftRoatation() { KillAllDOTween(); yield return new WaitForSeconds(0.01f); m_firstImage.GetComponent<MarqueeUIItem>().UpdateImageColorA(); yield return new WaitForSeconds(time_interval); for (int i = m_allImage.Length-1; i > -1; i--) { m_allImage[i].GetComponent<MarqueeUIItem>().UpdateImageColorA(); yield return new WaitForSeconds(time_interval); } yield return new WaitForSeconds(time_interval); m_firstImage.GetComponent<MarqueeUIItem>().UpdateImageColorA(); } private IEnumerator RightRoatation() { KillAllDOTween(); yield return new WaitForSeconds(0.01f); m_firstImage.GetComponent<MarqueeUIItem>().UpdateImageColorA(); yield return new WaitForSeconds(time_interval); for (int i = 0; i < m_allImage.Length; i++) { m_allImage[i].GetComponent<MarqueeUIItem>().UpdateImageColorA(); yield return new WaitForSeconds(time_interval); } yield return new WaitForSeconds(time_interval); m_firstImage.GetComponent<MarqueeUIItem>().UpdateImageColorA(); } private void KillAllDOTween() { m_firstImage.GetComponent<MarqueeUIItem>().KillDOTween(); m_firstImage.color = Color.clear; for (int i = 0; i < m_allImage.Length; i++) { m_allImage[i].GetComponent<MarqueeUIItem>().KillDOTween(); m_allImage[i].color = Color.clear; } } }
设置
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)