반응형
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);
}
----
반응형
'Unity > UIUX프로그래밍' 카테고리의 다른 글
0422_ UI 팝업 창 애니메이션 하기 (0) | 2021.04.22 |
---|---|
0421_ TestUIStage // 데이터 가져와서 사용하고 팝업에 띄우기 (0) | 2021.04.21 |
0421_유니티 데이터 저장하는 것 (0) | 2021.04.21 |
0421_ UIStage (0) | 2021.04.21 |
0420_아이템 먹기 + 인벤토리 연동 (0) | 2021.04.20 |