Scrol zodat het geselecteerde item boven aan de lijst met vervolgkeuzelijsten staat

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Verificatie omgeving

Ramen
  • Vensters 11
Unity-editor
  • 2020.3.25f1

Vereisten voor deze tip

De volgende instellingen zijn vooraf gemaakt als voorwaarde voor de uitleg van deze tips.

Bij het weergeven van de vervolgkeuzelijst wordt altijd het bovenste item weergegeven.

Als het aantal vervolgkeuzelijsten groter is dan het vervolgkeuzemenu, wordt scrollen weergegeven, Op dat moment is het eerste item dat wordt weergegeven altijd het item bovenaan.

Dit is ook het geval wanneer het item onderaan is geselecteerd en uitgevouwen.

Sommige mensen willen echter dat het item dat ze selecteren bovenaan de lijst staat wanneer het is uitgevouwen. Om hieraan tegemoet te komen, moet u de volgende aanvullende instellingen configureren:

Scroll zodat het geselecteerde item bovenaan staat bij het uitvouwen van de vervolgkeuzelijst

Dit wordt gedaan door middel van een script. Voeg een script toe aan je project en geef het een naam, DropdownScroll maar de naam is willekeurig.

Wanneer u de Script Editor opent, voert u het volgende in:

using UnityEngine;
using UnityEngine.UI;    // 追加

public class DropdownScroll : MonoBehaviour
{
  public void Start()
  {
    // スクロールの計算に必要な各コンポーネントを取得
    var dropdown = GetComponentInParent<Dropdown>();
    var scrollRect = gameObject.GetComponent<ScrollRect>();
    var viewport = transform.Find("Viewport").GetComponent<RectTransform>();
    var contentArea = transform.Find("Viewport/Content").GetComponent<RectTransform>();
    var contentItem = transform.Find("Viewport/Content/Item").GetComponent<RectTransform>();

    // 選択しているアイテムの位置や表示領域をもとに選択アイテムまでスクロールすべき量を計算する
    var areaHeight = contentArea.rect.height - viewport.rect.height;
    var cellHeight = contentItem.rect.height;
    var scrollRatio = (cellHeight * dropdown.value) / areaHeight;
    scrollRect.verticalNormalizedPosition = 1.0f - Mathf.Clamp(scrollRatio, 0.0f, 1.0f);
  }
}

De inhoud van de code is niet zo ingewikkeld. Wanneer de vervolgkeuzelijst wordt uitgevouwen, wordt de schuifpositie berekend en zo ingesteld dat het geselecteerde item bovenaan staat.

Start De reden om het in de methode te schrijven, is omdat het ervan uitgaat dat het initialisatieproces elke keer dat de vervolgkeuzelijst wordt uitgevouwen, zal werken.

Nadat u de code hebt opgeslagen, voegt u dit Dropdown Template script toe aan .

Temolate De objecten eronder worden gegenereerd wanneer de vervolgkeuzelijst wordt uitgevouwen nadat het spel is uitgevoerd. Het bijgevoegde onderdeel wordt ook geïnitialiseerd op het moment van implementatie. Wanneer de vervolgkeuzelijst wordt gesloten, wordt het uitgevouwen object ook vernietigd, Als u het opnieuw implementeert, wordt het opnieuw gegenereerd, zodat het initialisatieproces na elke implementatie wordt uitgevoerd.

Laten we het proberen.

Zoals hierboven vermeld, is de vervolgkeuzelijst die geen actie heeft ondernomen niet zichtbaar, zelfs niet als u deze uitvouwt met het onderstaande item geselecteerd. Aan de andere kant, als u de vervolgkeuzelijst uitvouwt die we hebben aangepakt, kunt u zien dat deze is gescrolld naar het punt waar u het geselecteerde item kunt zien.