물에 살고싶은 개발자

UI에서 뒤로가기버튼 활용법 본문

Unity3D

UI에서 뒤로가기버튼 활용법

돼지사랑 2015. 12. 28. 17:53

이번엔 비교적 간단한것에 대한 것을 포스팅한다.

(히트같은)모바일RPG게임을 만들다보면 UI의 복잡도가 꽤나 높은편이다.

UI가 각각 파트별로 나뉘어져있고 그 파트안에서 뒤로가기버튼은

UI의 파트별 이동일 경우도 있고, 파트내부에서의 이동일 경우도 있다.


말이 약간 어려울수도 있지만, 결론은 그냥 "이전 페이지로 갈것이냐" vs "메인로비로 나갈것이냐"

이 두가지중 하나라고 볼 수 있다. 대부분의 경우 전자를 택하게 된다. 매번 뒤로가기버튼으로 메인로비까지 나가버리면 유저로 하여금 불필요한 터치가 늘어나기 때문이다.

문제는 이전 페이지로 가는데 데이터를 어떻게 관리할것이냐? 라는 부분인데 

전 프로젝트에서는 상태별로 나눠놓고 상태 인덱스를 스택에 넣어 관리했지만, 

이번엔 그냥 상태 자체를 안쓰기로 했다. (쓸데없이 복잡하기만 하더라)


아무튼 요는 스택이다. 포인트는 스택의 작동방식에 있다.

push()로 자료구조에 가장 위에 아이템을 삽입

pop()으로 가장 위에 아이템을 반환 및 자료구조에서 제거

peek()으로 가장 위에 있는 아이템을 반환(제거안함)


이쯤되면 감이 올것이다.

UI의 페이지가 변경될 때마다 각 페이지를 push()해주고 뒤로가기버튼을 클릭할때마다 pop()해주면 된다.

뭐든지 말로는 간단하지만 막상 구현해보면 이래저래 문제가 생기는법.

그래서 한가지 장치를 더했다.


코드를 보자

switch( mUIStack.Pop().name )
{		
case "PartsView" :
	PublicBarOff();
	PartsViewOff();
	MainViewInit();
	break;
case "WikiBookView" :
	WikiViewOff();
	MainViewInit();
	break;
case "Upgrade" :
	UpgradeOff();
	break;
}



화면전환이 있을때마다 push해주고 뒤로가기버튼이 클릭될 때마다 위 방식으로 걸러준다.

스위치문이 들어가는 이유는 UI마다 전부 전환할때 필요한 조건들이 다양한편이기때문이다.

단순히 현재 열려있는 페이지를 끄고 이전 페이지를 키는것만 필요한 경우도 있지만, 이것저것

화면을 전환하기위한 (데이터의)사전준비 같은것들이 필요한 경우도 적지 않기 때문이다.


끗!

Comments