에러 상황)
특정 팝업창의 스크롤뷰의 초기 위치가 자꾸 맨 밑으로 내려가는 현상
scrollRect.verticalNormalizedPosition = 1을 사용해서 scrollRect 초기 위치를 reset 시켜줘도 계속해서 밑으로 자동으로 스크롤이 내려간다.
pivot 변경도 해보고 다른 곳에 있는 스크롤뷰 설정을 그대로 가져와서 사용도 해보고 이것저것 시도해봤으나 계속 같은 현상이 발생했다.
스크롤뷰를 바꿔보기도해보고 Content 설정을 바꿔보기도 해보고..
특히 스크롤뷰 위치를 리셋시켜주는 scrollRect.verticalNormalizedPosition = 1에 디버깅을 걸어서 천천히 시도했을 때는 정상적으로 초기위치설정이 작동하기도 했다.
원인)
부모 컴포넌트에 있던 팝업 오픈 애니메이션이 원인이었다.
해당 애니메이션과 어떤 상호작용을 했는지는 정확히 모르겠지만 이 애니메이션 때문에
팝업이 오픈되고 scrollRect.verticalNormalizedPosition = 1로 초기위치 설정이 제대로 된 이후에 애니메이션이 작동해서 스크롤뷰가 튕겼던 것.
해결방법)
- 애니메이션을 꺼준다.
- 스크롤뷰를 가진 컴포넌트를 애니메이션을 가지고 있는 부모컴포넌트로부터 독립시켜준다.
(단, 이럴경우 팝업 애니메이션과 독립적으로 켜지므로 어색함)
- 애니메이션 끝나는 시간 체크해줘서 UIHelper.ResetScrollRect(); 실행시키기
→ 확장시켜서 베이스 윈도우에 애니메이션받아서 끝날때 실행시킬 함수 만들어주는 구조 만들기
'C# > C# 학습 (TIL)' 카테고리의 다른 글
C# CSVReader for Unity (0) | 2023.02.27 |
---|---|
Enum flag (0) | 2023.02.06 |
유니티 RectTransform (0) | 2023.01.24 |
유니티 그래픽스 퍼포먼스 최적화 관련 - 드로우콜 (0) | 2022.12.30 |
유니티 safe Area 대응 (1) | 2022.12.12 |