unity 快速做动画:Unity轮播动画实现
unity 快速做动画:Unity轮播动画实现图3voidSildeShow() { for(inti=0;i<SubRect_x.Count;i ) { SubRect_Tra[i].position=newVector3 (SubRect_Tra[i].position.x-30*Time.deltaTime rectParent.position.y 0); if(SubRect_Tra[i].position.x<=SubRect_x[0] 50) { SubRect_Tra[i].position=newVector3(SubRect_x[6] 50 rectParent.position.y 0);; } } }上面添加一个判断实现效果看下:图2然后让他轮播就行了,完成,这篇文章就到这里结束!![送心]那么怎么让它轮播呢?让它超过首个Image的x轴然后将他的位置设置为上面首次存进list里面的末位置不就行了
正文:创建画布并添加Image如下图:
或者只做一个,然后利用Instantiate实例化生成也没问题,我这里为了方便直接建了7个。
首先新建一个脚本,并且在你认为合适的周期函数,获取他们各自的x轴位置,如下:
privateTransformrectParent;
privateList<float>SubRect_x=newList<float>();
privateList<RectTransform>SubRect_Tra=newList<RectTransform>();
voidAwake()
{
rectParent=GameObject.Find("rectangleParent").GetComponent<Transform>();
foreach(RectTransformiteminrectParent)
{
SubRect_x.Add(item.transform.position.x);
SubRect_Tra.Add(item);
}
}
为了方便我给他们设置了父物体,且利用了foreach遍历获取它们的Transform和x轴。
上面代码已经完成了这些条件的获取,接着需要让他们动起来:
voidSildeShow()
{
for(inti=0;i<SubRect_x.Count;i )
{
SubRect_Tra[i].position=newVector3
(SubRect_Tra[i].position.x-30*Time.deltaTime rectParent.position.y 0);
}
}
新建了一个方法然后一个for循环,就可以了,效果向下看:
图2
然后让他轮播就行了,完成,这篇文章就到这里结束!![送心]
那么怎么让它轮播呢?让它超过首个Image的x轴然后将他的位置设置为上面首次存进list里面的末位置不就行了吗!朝下看,
voidSildeShow()
{
for(inti=0;i<SubRect_x.Count;i )
{
SubRect_Tra[i].position=newVector3
(SubRect_Tra[i].position.x-30*Time.deltaTime rectParent.position.y 0);
if(SubRect_Tra[i].position.x<=SubRect_x[0] 50)
{
SubRect_Tra[i].position=newVector3(SubRect_x[6] 50 rectParent.position.y 0);;
}
}
}
上面添加一个判断实现效果看下:
图3
因为第一个x轴的设置等于image的x轴, 50避免刚开始运行0跳到7的位置,从而重叠,这里其实完全可以定义一个初始位置和结束位置来代替list列表里的首末元素。
全文完!