这篇文章主要为大家详细介绍了如何利用一致实现跑马灯效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
目录
一、效果二、需要动画插件之间三、脚本1.每个格子上的脚本文件2.管理脚本文件
一、效果
二、需要动画插件DOTween
下载地址
三、脚本
1.每个格子上的脚本文件
使用系统。收藏;
使用系统。集合。泛型;
使用联合工程
使用联合工程.UI;
使用DG .补间;
公共类marqueuiitem:monobehavior
{
私有原始图像m _原始图像
私有字符串这个指数
私有协程m _协程;
私有空的开始()
{
m _ raw image=getcomponentraimage();
thisIndex=转换GetSiblingIndex().ToString();
}
public void UpdateImageColorA()
{
KillDOTween();
m _ raw图像。颜色=色彩。白色;
m _ coroutine=StartCoroutine(ShowUI());
}
私有IEnumerator ShowUI()
{
yield返回新等待秒数(0.1F);
原始图像.文件颜色(彩色透明,1.5f).SetId(本索引);
}
public void KillDOTween()
{
如果(之间(thisIndex))
{
if (m_coroutine!=空)
{
StopCoroutine(m _ coroutine);
}
两者之间.杀(本指数);
}
}
}
2.管理脚本文件
使用系统。收藏;
使用系统。集合。泛型;
使用联合工程
使用联合工程.UI;
公共类MarqueeUIManager : MonoBehaviour
{
[标题('时间间隔')]
公共浮动时间间隔=0.05f
公共RawImage m _ firstImage
公共raw image[]m _ all image;
私人协管员m _ LeftCor
私人协程m _ RightCor
私有空的开始()
{
m _ first图像。颜色=色彩。清晰;
for(int I=0;我是一名摄影师。长度;我)
{
m_allImage[i].彩色=彩色.透明
}
}
私有空的更新()
{
如果(输入GetKeyDown(KeyCode .l))
{
LeftRotationUI();
}
如果(输入GetKeyDown(KeyCode .r))
{
RightRotationUI();
}
}
私有void LeftRotationUI()
{
if (m_RightCor!=空)
{
StopCoroutine(m _ right cor);
}
if(m_LeftCor!=空)
{
StopCoroutine(m _ left cor);
}
m _ left cor=StartCoroutine(left rotation());
}
私有void RightRotationUI()
{
if (m_LeftCor!=空)
{
StopCoroutine(m _ left cor);
}
if (m_RightCor!=空)
{
StopCoroutine(m _ right cor);
}
m _ right cor=StartCoroutine(右旋());
}
私有IEnumerator LeftRoatation()
{
killaldtween();
收益率返回新的等待秒数(0.01 f);
m_firstImage .GetComponentMarqueeUIItem().UpdateImageColorA();
产量返回新的WaitForSeconds(time _ interval);
for (int i=m_allImage .长度-1;I-1;我-)
{
m_allImage[i].GetComponentMarqueeUIItem().UpdateImageColorA();
产量返回新的WaitForSeconds(time _ interval);
}
产量返回新的WaitForSeconds(time _ interval);
m_firstImage .GetComponentMarqueeUIItem().UpdateImageColorA();
}
私有IEnumerator RightRoatation()
{
killaldtween();
收益率返回新的等待秒数(0.01 f);
m_firstImage .GetComponentMarqueeUIItem().UpdateImageColorA();
产量返回新的WaitForSeconds(time _ interval);
for(int I=0;我是一名摄影师。长度;我)
{
m_allImage[i].GetComponentMarqueeUIItem().UpdateImageColorA();
产量返回新的WaitForSeconds(time _ interval);
}
产量返回新的WaitForSeconds(time _ interval);
m_firstImage .GetComponentMarqueeUIItem().UpdateImageColorA();
}
private void KillAllDOTween()
{
m_firstImage。GetComponentMarqueeUIItem()。KillDOTween();
m _ first image . color=color . clear;
for(int I=0;我是一名摄影师。长度;我)
{
m_allImage[i]。GetComponentMarqueeUIItem()。KillDOTween();
m_allImage[i]。color=Color.clear
}
}
}
设置
这就是这篇关于Unity实现ticker效果的示例代码。有关Unity ticker effect的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。