Ich wollte den Wert der Bildlaufleiste meines scrollview-Objekts bei jedem Erstellen eines neuen Textobjekts auf 0 setzen. Auf diese Weise würde das neueste Objekt immer unten bleiben, ohne herunterscrollen zu müssen (denken Sie beispielsweise an den Chat eines Videospiels). Mein Problem ist, dass das Programm aus irgendeinem Grund den Wert auf 0 setzt und dann das Textobjekt erstellt, so dass es das zweitjüngste Objekt am unteren Rand der Bildlaufansicht behält.Unity 2D Einstellen des Wertes einer Bildlaufleiste auf 0
Mein Code:
//Creates the Text objects
private GameObject GenerateTextObject(string content)
{
//Creates the Text objects
GameObject messagePrefab = Instantiate(MessagePrefab);
Text textComponent = messagePrefab.GetComponent<Text>();
//Sets the content of the text and parent
textComponent.text = content;
messagePrefab.transform.SetParent(ContentPanel.transform, false);
ScrollbarVertical.value = 0;
return messagePrefab;
}
Im Code, den ich am Ende der Funktion den Wert setze, sondern setzt immer noch den Wert der Scrollbar auf 0 (richtig die Scroll nach unten bewegt), bevor die Objekt wird erstellt.
https://gyazo.com/897982521f13d7792ec26540490a40c0 Im Gyazo Bild können Sie sehen, wie es nicht den ganzen Weg hinunter scrollt.
Ich habe versucht, eine Coroutine und WaitForEndFrame sowie WaitForseconds (1), aber keiner scheint zu funktionieren.
Bearbeiten: Beim Laden von Unity und Senden neuer Nachrichten an die Scrollansicht, sehe ich die Bildlaufleiste ganz nach unten und dann wirklich schnell nach oben bewegen nur ein wenig versteckt das neue Textobjekt.
Ändern Sie die 'Elastizität' von ScrollRect zu' 0' und führen Sie dann 'ScrollbarVertical.value = 0;'. Das ist nur eine Idee. Nicht sicher, ob das überhaupt funktioniert. – Programmer
Nein ... Ich habe versucht, mit allen ScrollRect-Optionen zu optimieren, und nichts scheint den Trick zu machen. :(, Vielen Dank für die Hilfe wieder Programmierer –
Nach viel denken und herumspielen mit verschiedenen "Fixes" Ich habe eine Workaround für dieses Problem. Noch einmal, danke für den Versuch zu helfen :) –