728x90
반응형

Unity에서의 Scroll기능
Unity UI 시스템을 활용하는 데 있어서 스크롤 기능은 아주 중요한 요소 중 하나입니다. 특히 많은 정보를 제한된 영역에 표시하거나 리스트, 인벤토리, 채팅 로그, 설정 메뉴 등 다양한 UI 요소에서 자주 활용됩니다. 이 글에서는 ScrollRect 컴포넌트를 중심으로 Unity에서 스크롤을 구현하는 방식과 자주 겪는 문제점, 그리고 커스터마이징 팁에 대해 설명드리겠습니다.
Scroll의 기본 개념
ScrollRect 구성 요소
- ScrollRect : 스크롤 기능의 핵심 컴포넌트입니다.
- Viewport : 사용자가 실제로 보게 되는 가시 영역입니다.
- Content : 실제로 스크롤되는 내부 콘텐츠 영역입니다.
- Scrollbar : 선택적으로 스크롤바를 추가할 수 있으며, 수동 또는 자동 연동이 가능합니다.
Scroll 방향은 가로(Horizontal), 세로(Vertical) 중 선택 가능하며, 일반적으로 양방향 스크롤은 권장되지 않습니다.
실습 예제 - 인벤토리 UI 스크롤뷰 만들기
- Canvas 안에 Scroll View 프리셋 생성
- Content에 아이템 프리팹을 동적으로 생성
- 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
반응형
'Unity' 카테고리의 다른 글
| Unity에서의 접근제한자란? (1) | 2025.05.08 |
|---|---|
| Unity에서의 객체? 클래스? 생성자? (0) | 2025.05.07 |
| Unity에서 IEnumerator와 Coroutine의 모든 것 (0) | 2025.04.21 |
| Unity LineRenderer는 무엇인가? (0) | 2025.04.18 |
| Unity Addressables의 개념과 실전 적용 방법 (0) | 2025.04.17 |