Unity

Unity에서의 Scroll기능

anvil925 2025. 4. 23. 21:55
728x90
반응형

Unity에서의 Scroll기능

Unity UI 시스템을 활용하는 데 있어서 스크롤 기능은 아주 중요한 요소 중 하나입니다. 특히 많은 정보를 제한된 영역에 표시하거나 리스트, 인벤토리, 채팅 로그, 설정 메뉴 등 다양한 UI 요소에서 자주 활용됩니다. 이 글에서는 ScrollRect 컴포넌트를 중심으로 Unity에서 스크롤을 구현하는 방식과 자주 겪는 문제점, 그리고 커스터마이징 팁에 대해 설명드리겠습니다.


Scroll의 기본 개념

ScrollRect 구성 요소

  • ScrollRect : 스크롤 기능의 핵심 컴포넌트입니다.
  • Viewport : 사용자가 실제로 보게 되는 가시 영역입니다.
  • Content : 실제로 스크롤되는 내부 콘텐츠 영역입니다.
  • Scrollbar : 선택적으로 스크롤바를 추가할 수 있으며, 수동 또는 자동 연동이 가능합니다.

Scroll 방향은 가로(Horizontal), 세로(Vertical) 중 선택 가능하며, 일반적으로 양방향 스크롤은 권장되지 않습니다.


실습 예제 - 인벤토리 UI 스크롤뷰 만들기

  1. Canvas 안에 Scroll View 프리셋 생성
  2. Content에 아이템 프리팹을 동적으로 생성
  3. Vertical Layout Group, ContentSizeFitter를 활용해 자동 정렬
for (int i = 0; i < itemCount; i++)
{
    GameObject item = Instantiate(itemPrefab, contentTransform);
    item.GetComponent<ItemUI>().Setup(data[i]);
}

성능 최적화 팁

  • 많은 수의 UI 요소를 한 번에 생성할 경우 프레임 드랍이 발생할 수 있습니다.
  • 오브젝트 풀링을 통해 아이템을 재사용하도록 구현하는 것이 중요합니다.
  • OnValueChanged 이벤트를 이용해 현재 뷰포트 내의 아이템만 활성화하는 방식도 고려해볼 수 있습니다.

터치 & 마우스 커스터마이징

  • 스크롤 속도 조절: ScrollRect.scrollSensitivity 값 조절
  • 터치 감도, 인풋 딜레이 조절
  • 드래그 중 UI 클릭 이벤트 차단: CanvasGroup.blocksRaycasts 제어

자주 겪는 문제들

증상원인 및 해결법

콘텐츠가 짤림 Content의 사이즈, Anchor, Pivot 확인
스크롤바 안 움직임 Scrollbar 컴포넌트와 연결 확인
자동 초기화 OnEnable 시점에 위치 초기화 코드 삽입 필요

확장 예제 - 스냅 스크롤 구현

캐릭터 선택 UI처럼, 각 항목을 드래그해서 정확히 중앙에 맞추는 스냅 스크롤도 많이 사용됩니다. DOTween이나 Lerp를 이용하여 부드러운 이동이 가능합니다.

float targetPos = index * itemWidth;
contentTransform.DOLocalMoveX(-targetPos, 0.3f);

 

Unity에서 Scroll 기능은 단순히 위/아래로 움직이는 것을 넘어, 사용자 경험을 크게 좌우할 수 있는 요소입니다. 기본 구조를 명확히 이해하고, 상황에 맞게 커스터마이징하는 것이 중요

728x90
반응형