본문 바로가기
KDT/유니티 심화

23/09/06 LearnUGUI (Stage 1)

by 잰쟁 2023. 9. 6.
728x90

**메모장에 구현할 것들 정리

 

한 페이지에 표시가능 UIStgae 수 : 18개
총 UIStage : 28
1페이지: 18개 1~18
2페이지: 10개 19~28

<한 페이지에 처음과 끝페이지 번호 알아내기>
처음:  끝페이지 번호 - (표시가능 UIStage수(18) -1)
끝: 페이지 번호 * 표시가능 UIStage수(18)
(단! 마지막 페이지에서는 총 페이지 수 나타내기)

EX)
1페이지
처음: 1   끝: 18
2페이지
처음: 19  끝: 36
3페이지
처음: 37  끝: 54
.
.
.
이전 페이지 버튼, 다음 페이지 버튼

뒤로가기 버튼 누르면 "뒤로 가기" 출력

닫기 버튼(팝업)
뒤로가기 버튼(페이지)

현재 페이지를 저장해야함
이전페이지 클릭 -> 현재페이지 -1
다음페이지 클릭 -> 현재페이지 +1

현재페이지가 1페이지면?
이전페이지 버튼 없음,,

====출력할 내용===

prev을 누르면 첫 페이지 입니다.
총 스테이지 : 28 
현재 페이지 : 1 
최대 페이지 : 2
스테이지 : 1 ~ 18 

next버튼을 누르면 마지막 페이지 입니다
총 스테이지 : 28 
현재 페이지 : 2
최대 페이지 : 2
스테이지 : 19 ~ 28

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

public class Test04UIMain : MonoBehaviour
{
    [SerializeField]
    private Button prevBtn;
    [SerializeField]
    private Button nextBtn;

    //총 페이지 수
    private int totalStage = 28;

    //한 페이지에 나타낼 수 있는 최대 페이지 수
    private int Max_Stage_Num = 18;

    //현재 페이지
    private int CurrnetPageNum = 1;

    //최대 페이지
    private int MaxPageNum;

    //시작 번호
    private int StartNum;
    //끝 번호
    private int EndNum;

    void Start()
    {
        this.prevBtn.onClick.AddListener(() =>
        {
            Debug.Log("이전 페이지로 가기");
            
            this.Display_prev();
        });

        this.nextBtn.onClick.AddListener(() => 
        {
            Debug.Log("다음 페이지로 가기");
           
            this.Display_next();
        });
    }

    void Display_prev()
    {
        //최대 페이지 수
        this.MaxPageNum = Mathf.CeilToInt((float)totalStage / Max_Stage_Num);
        //끝 번호 구하기
        this.EndNum = this.CurrnetPageNum * this.Max_Stage_Num;
        //시작 번호 구하기
        this.StartNum = this.EndNum - (this.Max_Stage_Num - 1);


        Debug.LogFormat("총 스테이지 : {0}", this.totalStage);
        Debug.LogFormat("현재 페이지 : {0}",this.CurrnetPageNum);
        Debug.LogFormat("최대 페이지: {0}",this.MaxPageNum);
        Debug.LogFormat("스테이지 : {0} ~ {1}",this.StartNum,this.EndNum);
    }

    void Display_next()
    {
        this.CurrnetPageNum++;
        //최대 페이지 수
        this.MaxPageNum = Mathf.CeilToInt((float)totalStage / Max_Stage_Num);
        //끝 번호 구하기
        this.EndNum = this.CurrnetPageNum * this.Max_Stage_Num;
        //시작 번호 구하기
        this.StartNum = this.EndNum - (this.Max_Stage_Num - 1);


        Debug.LogFormat("총 스테이지 : {0}", this.totalStage);
        Debug.LogFormat("현재 페이지 : {0}", this.CurrnetPageNum);
        Debug.LogFormat("최대 페이지: {0}", this.MaxPageNum);
        //마지막 페이지일 경우
        if(this.CurrnetPageNum >= this.MaxPageNum)
        {
            Debug.LogFormat("스테이지 : {0} ~ {1}", this.StartNum,this.totalStage);
            Debug.Log("마지막 페이지입니다.");
        }
        else
        {
            Debug.LogFormat("스테이지 : {0} ~ {1}", this.StartNum, this.EndNum);
        }     
    }
}

PREV 클릭했을때

 

NEXT 눌렀을때