近期在项目中,策划给出了一个需求就是,让按钮按照一个轮盘的轨迹进行滑动的效果,经过一番测试,实现了初步的效果。
我这里区分了横向滑动和纵向滑动,这里以纵向滑动为例子进行示范,实现按钮的滑动效果。
首先就是先进行位置初始化:
///& 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
下面是实现的效果:
工程地址:团结实现轮盘方式的按钮滚动效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。