unity背包页无缝滑动

时间:2025-02-07 12:38:32
using ; using UnityEngine; using ; public class BagManager : MonoBehaviour { public Button prev;//上一页 public Button next;//下一页 public Button first;//第一页 public Button last;//最后一页 public Transform items;//页父对象 public int maxBagPage = 5;//最大页数 public int nowNum = 1;//当前显示的是第几页 public Text pageText;//当前页text public Color oldColor;//非禁用的按钮颜色 int widthMove = 765;//items的GridLayoutGroup的宽度,每次滑动的距离 void Start() { oldColor = <Image>().color; maxBagPage = ; widthMove = (int)<RectTransform>().; = () + "/" + (); SetFirstBlackColor(); (PrevClick); (NextClick); (FirstClick); (LastClick); } //末页 private void LastClick() { //当前页小于最大页 if (nowNum < maxBagPage) { int k = nowNum; //设置最后一页在当前页后面实现无缝移动 (maxBagPage - 1).SetSiblingIndex(k); (new Vector3(-widthMove * nowNum, , 0), 0.1f).OnComplete(() => { (k).SetSiblingIndex(maxBagPage - 1); //items坐标必须归位,便于上一页的移动 = new Vector3(-widthMove * (maxBagPage - 1), , 0);// }); nowNum = maxBagPage; = () + "/" + maxBagPage; SetLastBlackColor();//末页和下一页按钮变黑色 } } //首页 private void FirstClick() { //当前页大于最小页 if (nowNum > 1) { //移动的那一刻要让第一页显示在当前页的左边一页 = new Vector3(-widthMove, , 0); //items的GridLayoutGroup的子物体隐藏 for (int i = 0; i < ; i++) { if (i != 0 && i != nowNum - 1) { (i).(false); } } //第一页坐标归为,第一页显示时的x坐标一直为0 (new Vector3(0, , 0), 0.1f).OnComplete(() => { //显示所有子物体,便于下一页的移动 for (int i = 0; i < ; i++) { (i).(true); } }); nowNum = 1; = () + "/" + maxBagPage; SetFirstBlackColor();//首页和上一页按钮变黑色 } } private void NextClick() { if (nowNum < maxBagPage) { nowNum++; = () + "/" + maxBagPage; (new Vector3(-widthMove * (nowNum - 1), , 0), 0.1f); if (nowNum == maxBagPage) SetLastBlackColor(); else SetAllNotBlack(); } } private void PrevClick() { if (nowNum > 1) { nowNum--; = () + "/" + maxBagPage; (new Vector3(-widthMove * (nowNum - 1), , 0), 0.1f); if (nowNum == 1) SetFirstBlackColor(); else SetAllNotBlack(); } } void SetLastBlackColor() { <Image>().color = ; <Image>().color = ; <Image>().color = oldColor; <Image>().color = oldColor; } void SetFirstBlackColor() { <Image>().color = ; <Image>().color = ; <Image>().color = oldColor; <Image>().color = oldColor; } void SetAllNotBlack() { <Image>().color = oldColor; <Image>().color = oldColor; <Image>().color = oldColor; <Image>().color = oldColor; } }