团结实现轮盘方式的按钮滚动效果

  

近期在项目中,策划给出了一个需求就是,让按钮按照一个轮盘的轨迹进行滑动的效果,经过一番测试,实现了初步的效果。

  

我这里区分了横向滑动和纵向滑动,这里以纵向滑动为例子进行示范,实现按钮的滑动效果。

  

首先就是先进行位置初始化:

     ///& lt; summary>///从大到小排的序,Y轴///& lt;/summary>   私人ComparisonComparisionY=委托(CircleScrollRectItemBase itemA, CircleScrollRectItemBase itemB)   {   如果(itemA.transform.localPosition。y==itemB.transform.localPosition.y)返回0;   (itemA.transform.localPosition返回。y比;itemB.transform.localPosition.y) & # 63;1: 1;   };         公共空间Init ()   {   如果(null==listitem | | listitem。长度==0)   {   返回;   }      如果(itemPostions !=零,,itemPostions。长度比;0)   {   for (int i=0;我& lt;itemPostions.Length;我+ +)   {   listitem[我].transform。localPosition=itemPostions[我];   }   }//XY轴排序按不同方式排序,可以统一使用共同的函数   如果(水平)   {//位置从小到大排的序   数组中。排序(listitem ComparisionX);   }   其他的   {//位置从大到小排的序   数组中。排序(listitem ComparisionY);   }//设置元素关系及固定位置   itemPostions=new Vector3 [listItems.Length];   for (int i=0;我& lt;listItems.Length;+ + i)   {   listitem[我]。SetItemConfig(我,//组id   listitem [% listitem (i + 1)。长度),//下一个项目   listitem [(i - 1 + listItems.Length) % listItems.Length]);//前一项      itemPostions[我]=new Vector3 (listitem[我].transform.localPosition.x,   listitem[我].transform.localPosition.y,   listitem[我].transform.localPosition.z);   listitem[我]。currPosIndex=我;   }   RefreshContentListLength ();   GetCurrPointItem ();   InitValue ();   }      

鼠标拖动时的更新代码:

  

开始拖动设置拖拽状态

        公共虚拟空间>///& lt; summary>//拖动中更新位置///& lt;/summary>///& lt;参数name=" eventData祝辞& lt;/param>   公共虚拟空间>///& lt; summary>///拖动结束///& lt;/summary>///& lt;参数name=" eventData祝辞& lt;/param>   公共虚拟空间>//在这里获取所有类型的按钮   for (int i=0;我& lt;listItems.Length;我+ +)   {   GameObject去=listitem[我].gameObject;   listitem[我].GetComponent