Rul, så det valgte element vises øverst på listen over rullelister

Side opdateret :
Dato for oprettelse af side :

Miljø til bekræftelse

Windows
  • Windows 11
Enhedslistens redaktør
  • 2020.3.25f1

Forudsætninger for dette tip

Følgende indstillinger er foretaget på forhånd som en forudsætning for forklaringen af disse tip.

Når rullelisten vises, vises det øverste element altid.

Hvis antallet af rullemenuer er større end rullelisten, vises rulning, På det tidspunkt vil det første element, der vises, altid være elementet øverst.

Dette gælder også, når elementet nederst er valgt og udvidet.

Nogle personer vil dog måske have det element, de vælger, øverst på listen, når det udvides. For at imødekomme dette skal du konfigurere følgende yderligere indstillinger:

Rul, så det valgte element er øverst, når du udvider rullemenuen

Dette gøres ved hjælp af et script. Føj et script til projektet, og navngiv det, DropdownScroll men navnet er vilkårligt.

Når du åbner Instrukseditor, skal du skrive følgende:

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);
  }
}

Indholdet af koden er ikke så kompliceret. Når rullelisten udvides, beregnes rullepositionen og indstilles, så det valgte element er øverst.

Start Årsagen til at skrive det i metoden er, fordi det antager, at initialiseringsprocessen fungerer hver gang rullemenuen udvides.

Når du har gemt koden, skal du vedhæfte dette Dropdown Template script til .

Temolate Objekterne under den genereres, når rullemenuen udvides, efter at spillet er udført. Den vedhæftede komponent initialiseres også på installationstidspunktet. Når rullemenuen er lukket, ødelægges det udvidede objekt, Hvis du installerer det igen, genereres det igen, så initialiseringsprocessen udføres efter hver installation.

Lad os prøve det.

Som nævnt ovenfor vil rullemenuen, der ikke har foretaget nogen handling, ikke være synlig, selvom du udvider den med elementet nedenfor valgt. På den anden side, hvis du udvider rullemenuen, som vi adresserede, kan du se, at den rulles til det punkt, hvor du kan se det valgte element.