반응형

어떻게 보면 간단한 구현 일 수도 있겠지만
난 어려웠다. ㅠㅠ 그래서 다시 정리하는 차원에서 포스팅 해본다.

먼저 간략하게 요약해보자면…
Unity의 기본제공되는 GUI를 사용,
데이터 형태는 Json형태로 만들어서 사용하기 편리하도록 parsing을 거친 뒤 구현하였다. 동작 원리는 스크롤 시 화면에 보여지는 부분의 GameObject(Item)만 생성하여 Draw Call을 줄이는 방식으로, 업 스크롤 시 위로 올라가는 Item을 아래로 이동시켜 아랫쪽 데이터를 붙이고, 다운 스크롤 시 아래로 내려가는 Item을 위로 이동시켜  위쪽 데이터를 붙이는 방식이다. 아이템을 잡고 있는 GameObject의 길이는 최초에 계산되어 전체 Item 갯수만큼의 길이로 생성되어진다.
자전거의 톱니와 체인을 생각하면 쉽게 이해될듯하다.

Hierarchy 구성

스크린샷 2016-01-19 오후 12.27.42

스크립트 구성

스크린샷 2016-01-19 오후 4.25.59

테스트용 데이터 세팅하기
먼저 JsonData를 만들자
Assets > Resources 폴더를 만들고 그 안에 data.txt 파일을 하나 만든 후 아래와 같이 코딩한다. 참고로 data.txt는 그냥 아무 파일 하나 만들어서 확장명만 바꿔주면 된다.
데이터 형태는 나중에 어떻게든 바꿔서 사용할 수 있다.

data.text

Hierarchy의 Manager에 ManagerHandler, ModelHandler, ListModel 라는 이름으로 C# Script 3개를 생성하고 아래와 같이 코딩한다.

ManagerHandler.cs

 

ListModel.cs

 

ModelHandler.cs

LitJson.dll은 여기에서 받을 수 있으며 Assets > Plugins(생성) 폴더에 넣어준다.

구현하기
먼저 Hierarchy의 ScrollRect(GameObject)에 ScrollRect 콤포넌트를 붙인다.
Infinity Content(GameObject)에 InfiniteScroll라는 C# Script을 생성한 후 아래와 같이 코딩한다.

 

Item(GameObject)에 Item 이라는 이름으로 C# Script를 생성해서 다름과 같이 코딩한다. 아이템 부분은 적당히 수정해서 사용할 수 있을 것이다.

 

Infinity Content의 Inspector가 보이도록 한 후 아래 그림에서 보이는 것 처럼 드래그해서 각 해당 되는곳으로 넣어 준 후 ItemWidth, ItemHeight, Gap 에 원하는 사이즈를 입력한다.

스크린샷 2016-01-19 오후 5.05.25

 

마찬가지로 Item또한 아래 그림처럼 드래드앤 드롭해준다.

스크린샷 2016-01-19 오후 5.13.05

 

Manager도 아래와 같이 Infinity Content를 드래그 앤 드롭 해준다.

스크린샷 2016-01-19 오후 5.16.12

반응형

+ Recent posts