Unity實現(xiàn)跑馬燈效果的示例代碼
更新時間:2022年05月06日 16:48:13 作者:龍胖胖的博客
這篇文章主要為大家詳細介紹了如何利用Unity實現(xiàn)跑馬燈效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
一、效果
二、需要動畫插件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; } } }
設(shè)置
到此這篇關(guān)于Unity實現(xiàn)跑馬燈效果的示例代碼的文章就介紹到這了,更多相關(guān)Unity跑馬燈效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# InitializeComponent()方法案例詳解
這篇文章主要介紹了C# InitializeComponent()方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08