2017-12-13 6 views
1

Ich habe eine dynamische Möglichkeit, die Inhaltsgröße abhängig von der Anzahl der Elemente zu erhöhen. Mit steigendem Inhalt verringert sich die Größe der Bildlaufleiste und der Wert des Bildlaufleistenwerts, der zum Verschieben des Inhalts um eine feste Zahl (z. B. 100 nach rechts) erforderlich ist, ändert sich ebenfalls (verringert). Kann ich eine Methode verwenden, die den Inhalt um eine feste Zahl scrollt, ohne von der Größe und dem Wert der Bildlaufleiste abhängig zu sein (oder eine Gleichung, die jedes Mal den benötigten Wert erhalten kann)?Unity: Wie wird der Scrollbar-Wert berechnet, der zum Verschieben des Inhalts mit bekanntem Wert benötigt wird?

Bearbeiten: Ich weiß, wie Sie scrollen, indem Sie Scrollbar.Value (von 0 bis 1) ändern. Aber ich muß mit einer festen Zahl (zB: 100) blättern kein Verhältnis (0-1)

+0

Mögliches Duplikat von [Scroll Rect manuelles Scrollen durch Skript Unity C#] (https://stackoverflow.com/questions/40931773/scroll-rect-manual-scrolling-through-script-unity-c-sharp) –

+0

Es ist nicht dasselbe. Ich kann scrollen, indem ich Scrollbar.Value (von 0 bis 1) ändere. Aber ich muss um eine feste Zahl scrollen (zB: 100), kein Verhältnis (0-1) –

Antwort

2

Scrollbar ist nur eine Kontrolle, die es für den Benutzer zu scrollen und hinter der Szene es ScrollRect.horizontalNormalizedPosition und ScrollRect.verticalNormalizedPosition manipuliert.

Sie verwenden scrollbar nicht, wenn Sie den Wert manuell mit Code festlegen müssen. Sie beschäftigen sich direkt mit der normalisierten Position des Scrollrects (die in einem Bereich von 0-1 liegt).

Sie können diesen Wert proportional ändern, indem Sie die Gesamtgröße von berechnen und dann das Verhältnis des gewünschten Bildlaufwerts ermitteln. Etwas wie folgt aus:

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

scrollRect.horizontalNormalizedPosition = targetPercentage; 

Nun, wenn Ihr scrollrect500 ist und Sie möchten 100 blättern.

Ihr Ziel Prozentsatz wird 100/500 (= 0.2f)

Ich hoffe, dass Sie den Rest herausfinden können.

+1

Danke für deine Antwort. 1- scrollRect.horizontalNormalizedPosition und scrollbar.value geben mir das gleiche Ergebnis. 2- Ihre Lösung funktionierte, aber es hat 2 Probleme: * Gesamtbreite ist die Breite des Inhalts und nicht Scroll Rect, weil ich die Größe des Inhalts nicht scrollrect/ändern * der Zielprozentsatz gibt mir nicht den gewünschten Wert. 3- Während ich Ihre Lösung versuche, finde ich eine einfache Lösung, indem ich die x-Position der Inhaltstransformation um den erforderlichen Wert (addieren oder subtrahieren 100) ändert –

+0

Offensichtlich! Wenn Ihr Ziel Inhalt ist, können Sie versuchen, die Inhaltsgröße zu berechnen. Und wie gesagt, die normalisierte Position von scroll-rect ist der beste Weg, um die Position des Inhalts hinter der Szene zu ändern. –

+0

Das einzige, was die Lösung nicht perfekt funktioniert, ist das Verhältnis. Vielleicht gibt es eine andere Möglichkeit, es zu berechnen. –

Verwandte Themen