Unity/UIUX프로그래밍

0421_ UIStage 페이지 넘기기

minquu 2021. 4. 21. 12:47
반응형

Next 버튼 

Prev 버튼을 누르면 페이지가 넘어간다.

 

 

먼저 변수에 버튼을 받아준다. 현재 페이지와 총 페이지에 대한 변수도 만들어준다.

 

스타트 부분에서 토탈페이지 = 최대 스테이지 / 배열의 총 길이 를 하면 토탈페이지 값이 나온다.

 

그리고 버튼을 누르면 기능을 하는 메서드가 호출되도록한다.

 

 

 public void NextPage()
    {
        if (this.currentPage == this.totalPage)
        {
            return;
        }
        this.currentPage++;

        Debug.LogFormat("currentPage: {0}, totalPage: {1}", this.currentPage, this.totalPage);

        var startIndex = (this.currentPage - 1) * this.arrUIStageItems.Length;
        var endIndex = startIndex + this.arrUIStageItems.Length;
        Debug.LogFormat("{0} ~ {1}", startIndex, endIndex);

        for (int i = 0; i < this.arrUIStageItems.Length; i++)
        {
            var uiStageItem = this.arrUIStageItems[i];
            uiStageItem.txtStageNo.text = (startIndex + i + 1).ToString();
        }

        if (this.currentPage == this.totalPage)
        {
            this.btnNext.gameObject.SetActive(false);
        }
        else
        {
            this.btnNext.gameObject.SetActive(true);
        }
        this.btnPrev.gameObject.SetActive(true);
    }

 

 

 

  if (this.currentPage == this.totalPage)
        {
            return;
        }

NextPage 메서드

 

먼저 현재 페이지가 총 페이지 (지금이 제일 끝)이면 메서드 작동 안하도록 한다.

 

this.currentPage++;

ㅁa만약 이상없이 잘 넘어 왔다면 현재 페이지를 하나 씩 증가한다.

 

 

 

   var startIndex = (this.currentPage - 1) * this.arrUIStageItems.Length;
        var endIndex = startIndex + this.arrUIStageItems.Length;

 

중요한 곳 !

 

시작 인덱스와 끝 인덱스를 구해줘야한다. 

 

for (int i = 0; i < this.arrUIStageItems.Length; i++)
        {
            var uiStageItem = this.arrUIStageItems[i];
            uiStageItem.txtStageNo.text = (startIndex + i + 1).ToString();
        }

 

그리고 for 문을 돌려 i 로 각 인덱스의 맞는 배열을 뽑아 낸다.

 

그리고 StageNo.text 에 (시작 인덱스 + i + 1) 를 해준 값을 스테이지 넘버로 쓴다.

 

  if (this.currentPage == this.totalPage)
        {
            this.btnNext.gameObject.SetActive(false);
        }
        else
        {
            this.btnNext.gameObject.SetActive(true);
        }
        this.btnPrev.gameObject.SetActive(true);

 

ㅁ그리고 현재 페이지와 총 페이지가 같으면 (현재 페이지가 제일 끝)

 btnNext 버튼을 비활성화한다.

 

아니면 계속 true로 하고

 

prev 버튼을 활성화한다.

 

------

 

Next 와 Prev 메서드와 이와 비슷함

 

 

 public void PrevPage()
    {
        if (this.currentPage == 1)
        {
            return;
        }
        this.currentPage--;
        var startIndex = (this.currentPage - 1) * this.arrUIStageItems.Length;
        var endIndex = startIndex + this.arrUIStageItems.Length;
        Debug.LogFormat("{0} ~ {1}", startIndex, endIndex);
        for (int i = 0; i < this.arrUIStageItems.Length; i++) {
            var uiStageItem = this.arrUIStageItems[i];
            uiStageItem.txtStageNo.text = (startIndex + i + 1).ToString();
        }
        if (this.currentPage == 1)
        {
            this.btnPrev.gameObject.SetActive(false);
        }
        else {
            this.btnPrev.gameObject.SetActive(true);
        }
        this.btnNext.gameObject.SetActive(true);
    }

 

 

----

 

 

 

 

반응형