UI Extension : ScrollSnap / 스냅 스크롤 뷰

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는 애니메이션이 끝난 뒤 호출됨. 완전히 정지라서 지연시간이 꽤 길다.

 

댓글

Designed by JB FACTORY