快捷搜索:  汽车  科技

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如下图:

unity 快速做动画:Unity轮播动画实现(1)

或者只做一个,然后利用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循环,就可以了,效果向下看:

unity 快速做动画:Unity轮播动画实现(2)

图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);; } } }

上面添加一个判断实现效果看下:

unity 快速做动画:Unity轮播动画实现(3)

图3

因为第一个x轴的设置等于image的x轴, 50避免刚开始运行0跳到7的位置,从而重叠,这里其实完全可以定义一个初始位置和结束位置来代替list列表里的首末元素。

unity 快速做动画:Unity轮播动画实现(4)

全文完!

猜您喜欢: