2017-12-13 30 views
1

나는 요소의 수에 따라 콘텐츠 크기를 늘릴 수있는 역동적 인 방법이 있습니다. 콘텐츠가 증가함에 따라 스크롤바 크기가 줄어들고 콘텐츠를 고정 숫자 (예 : 100에서 오른쪽으로) 이동하는 데 필요한 스크롤 막대 값의 값도 변경됩니다 (감소). 스크롤 막대 크기와 값 (또는 매번 필요한 값을 얻을 수있는 수식)에 의존하지 않고 고정 된 수로 내용을 스크롤하는 방법을 사용할 수 있습니까?Unity : 알려진 값으로 내용을 이동하는 데 필요한 스크롤바 값을 계산하는 방법은 무엇입니까?

편집 : Scrollbar.Value (0에서 1)를 변경하여 스크롤하는 방법을 알고 있습니다. 되지 비율 (0-1)

+0

가능한 한 [Scroll Rect manual through script Unity C#] 가능한 복제본 (https://stackoverflow.com/questions/40931773/scroll-rect-manual-scrolling-through-script-unity-c-sharp) –

+0

같은 것이 아닙니다. Scrollbar.Value (0에서 1)를 변경하여 스크롤하는 방법을 알고 있습니다. 하지만 고정 숫자 (예 : 100)가 아닌 비율 (0-1)으로 스크롤해야합니다. –

답변

2

Scrollbar 스크롤 할 수있는 사용자와는 ScrollRect.horizontalNormalizedPositionScrollRect.verticalNormalizedPosition 조작 장면 뒤에이 단지 컨트롤입니다 :하지만 고정 된 수의 (100 예) 스크롤 할 필요가있다.

코드를 사용하여 수동으로 값을 설정해야하는 경우 scrollbar을 사용하지 마십시오. scrollrect의 정규화 된 위치 (0-1 범위)를 직접 처리합니다.

ScrollRect의 총 크기를 계산 한 다음 원하는 스크롤 값의 비율을 찾아서이 값을 비례 적으로 변경할 수 있습니다. 이런 식으로 뭔가 :

float totalWidth = // find total width of scroll rect transform. 
float targetValue = 100; 
float targetPercentage = targetValue/totalWidth; 

scrollRect.horizontalNormalizedPosition = targetPercentage; 

이제 scrollrect500이며 100로 이동하려는 경우.

대상 비율은 당신이 나머지를 알아낼 수 있기를 바랍니다 100/500 (= 0.2f)

될 것입니다.

+1

답장을 보내 주셔서 감사합니다. 1- scrollRect.horizontalNormalizedPosition과 scrollbar.value는 나에게 동일한 결과를 제공합니다. 2 해결책은 효과가 있었지만 다음과 같은 두 가지 문제가 있습니다. * 총 너비는 내용의 너비이며 스크롤하는 사각형이 아닙니다. 내용의 크기가 스크롤되지 않기 때문에/* 원하는 비율로 원하는 값을 얻을 수 없습니다. 3- 귀하의 솔루션을 시도하는 동안 콘텐츠 변환의 x 위치를 필요한 값 (100을 더하거나 뺍니다)으로 변경하여 가장 간단한 해결책을 찾습니다 –

+0

분명히! 당신의 목표가 콘텐츠라면, 당신은 content-rect 크기를 계산할 수 있습니다. 그리고 제가 말했듯이, 스크롤 - 렉의 정규화 된 위치는 결국 장면의 뒤쪽에서 내용의 위치를 ​​변경하기 때문에 이동하는 가장 좋은 방법입니다. –

+0

솔루션을 완벽하게 작동시키는 유일한 방법은 비율입니다. 다른 방법으로 계산할 수 있습니다. –