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