2017-12-13 12 views
1

私は、その上の要素の数に応じてコンテンツサイズを増加させる動的な方法を持っています。 コンテンツが増加するにつれて、スクロールバーのサイズが小さくなり、コンテンツを固定数(たとえば100〜右側)に移動するのに必要なスクロールバーの値も変更されます(減少します)。 スクロールバーのサイズと値(または毎回必要な値を得ることができる式)に依存せずに、固定数でコンテンツをスクロールする方法がありますか?ユニティ:既知の値でコンテンツを移動するのに必要なスクロールバーの値を計算する方法は?

編集: 私はScrollbar.Value(0から1まで)を変更してスクロールする方法を知っています。しかし、私の固定数でスクロールする必要があります(例:100)ではない比(0-1)

+0

[Scroll Rectマニュアルスクロールによるスクリプト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を操作するシーンの後ろにあり、単に制御です。

コードを使用して値を手動で設定する必要がある場合は、scrollbarを使用しないでください。スクロールの正規化された位置(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.horizo​​ntalNormalizedPositionとscrollbar.valueは私に同じ結果を与えています。 2解決策は働いていましたが、2つの問題があります。*全幅はコンテンツの幅で、スクロールアライメントはしません。スクロールしないコンテンツのサイズを変更しています。 3私はあなたの解決策を試していますが、コンテンツ変換のx位置を必要な値(100を加算または減算)で変更することで、最も簡単な解決策を見つけることができます –

+0

明らかに!ターゲットがコンテンツの場合は、コンテンツrectサイズを計算できます。そして私が言ったように、スクロール・レットの正規化された位置は、シーンの背後にあるコンテンツの位置を結局変えるので、移動する最善の方法です。 –

+0

ソリューションが完全に機能しないようにするのは、比率だけです。 それを計算する別の方法があるかもしれません。 –

関連する問題