UI Extension : ScrollSnap
https://bitbucket.org/UnityUIExtensions/unity-ui-extensions/wiki/Controls/ScrollSnap
ScrollSnap 튜토리얼 영상
https://www.youtube.com/watch?v=LnKy3_ymEXs
[ Horizontal 기준 ]
1) Create - UI - UIExtension - Horizontal Scroll snap을 생성한다. (만약 마스크를 주고 싶다면
2) Scrollview 속성에서 Vertical은 체크해제 해준다.
3) Scrollview 컴포넌트를 가진 오브젝트에 Horizontal Scroll Snap 스크립트를 붙여준다.
- StartingScreen : 0 / 초기에 선택되는 페이지는 몇 번째인지. 초기값은 0
- page Step : 1 / 페이지의 간격을 결정한다. 초기 값은 1이며 1로 설정된 경우 간격이 없다.
- Use Hard Swipe : TRUE / 살짝만 스와이프할경우, 미끄러지다가 멈추면 돌아가는데, 이를 삭제한다. 초기값은 false
- Use Fast Swipe : TRUE / 대기시간을 빠르게한다. 초기값은 false
- Mask Area : 상황에 따라 자기 자신의 RectTransform으로 설정 / 자기 자신을 설정해두면,
스냅된 페이지만 Active On 되고 나머지는 꺼진다. 무한 스크롤링이나 최적화를 위해 사용하는 기능.
- ChildObjects : 건들지 말것. 시작될 때 content 하위에 있는 오브젝트를 자동으로 불러온다. 미리 설정하면 안됨.
4) content 하위에 원하는 갯수만큼 버튼이나 이미지 등을 넣어준다.
5) 실행해보면 아래와 같은 결과를 얻을 수 있다.
Mask Area를 켠 경우.
[SerializeField] HorizontalScrollSnap scrollsnap;
void Awake()
{
scrollsnap.OnSelectionPageChangedEvent.AddListener(OnPageChanged);
scrollsnap.OnSelectionChangeEndEvent.AddListener(OnPageChangeEnd);
}
void OnPageChanged(int index)
{
Debug.Log("CHanged");
}
void OnPageChangeEnd(int index)
{
Debug.Log("End");
}
Changed는 바뀌자마자 호출됨
End는 애니메이션이 끝난 뒤 호출됨. 완전히 정지라서 지연시간이 꽤 길다.
'🌍 Unity > UI & TMP' 카테고리의 다른 글
DoText사용 시 RichText의 Length 문제. (0) | 2020.05.21 |
---|---|
UI Extension - UI LineRenderer (0) | 2020.05.05 |
UI Unmask (0) | 2020.04.07 |
유니티 버튼을 눌렀을 때 다른버튼이 반응하게 하기 (0) | 2020.04.04 |
HorizontalLayoutGroup / VerticalLayoutGroup update 레이아웃 업데이트 문제 (0) | 2020.04.03 |