Función de cambio de página de Unity

 
 
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;

public class TurnPagesComponent : MonoBehaviour
{
    private Button[] buttons;
    private Button btnLast;
    private Button btnNext;
    public int ShowPageCount = 10;
    private int index = 1;
    private int totalPage = 0;
   
    void Start()
    {
        SaveData();
        btnLast.onClick.AddListener(LastPage);
        btnNext.onClick.AddListener(NextPage);
    }

    /// <summary>
    /// 存储数据
    /// </summary>
    private void SaveData()
    {
        buttons = transform.GetChild(0).GetComponentsInChildren<Button>(true);
        btnLast = transform.GetChild(1).GetComponent<Button>();
        btnNext = transform.GetChild(2).GetComponent<Button>();
        if (buttons.Length>ShowPageCount)
        {
            btnLast.gameObject.SetActive(index != 1);
            btnNext.gameObject.SetActive(index != totalPage);
        }
        else
        {
            btnLast.gameObject.SetActive(false);
            btnNext.gameObject.SetActive(false);
        }
        TotalPage();
    }

    /// <summary>
    ///显示当前页面内容
    /// </summary>
    private void ShowCurrentPage(int currentPage)
    {
        for (int i = 0; i < buttons.Length; i++)
        {
            if (i/10==currentPage)
            {
                buttons[i].gameObject.SetActive(true);
            }
            else
            {
                buttons[i].gameObject.SetActive(false);
            }
        }
    }

    /// <summary>
    /// 总页数
    /// </summary>
    /// <returns></returns>
    private int TotalPage()
    {
        totalPage = (buttons.Length / ShowPageCount) + (((buttons.Length % ShowPageCount) == 0) ? 0 : 1);
        return totalPage;
    }

    /// <summary>
    /// 下一页
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    private void NextPage()
    {
        index++;
        btnNext.gameObject.SetActive(index != totalPage);
        btnLast.gameObject.SetActive(index != 1);
        ShowCurrentPage(index-1);
    }

    /// <summary>
    /// 上一页
    /// </summary>
    /// <exception cref="NotImplementedException"></exception>
    private void LastPage()
    {
        index--;
        btnLast.gameObject.SetActive(index != 1);
        btnNext.gameObject.SetActive(index != totalPage);
        ShowCurrentPage(index-1);
    }
    
}

Supongo que te gusta

Origin blog.csdn.net/weixin_46051151/article/details/126908180
Recomendado
Clasificación