Drsenje tako, da je izbrani element na vrhu seznama spustnih elementov

Stran posodobljena :
Datum ustvarjanja strani :

Okolje za preverjanje

Windows
  • Windows 11
Urejevalnik Unity
  • 2020.3.25F1

Predpogoji za ta nasvet

Naslednje nastavitve so bile vnaprej narejene kot predpogoj za razlago teh nasvetov.

Pri prikazu spustnega seznama elementov je vedno prikazan zgornji element.

Če je število spustnih elementov večje od spustnega območja, se prikaže drsenje, Takrat bo prvi prikazani element vedno element na vrhu.

To velja tudi, če je element na dnu izbran in razširjen.

Vendar pa bodo nekateri uporabniki morda želeli element, ki ga izberejo, na vrhu seznama, ko ga razširite. Če želite to prilagoditi, morate konfigurirati naslednje dodatne nastavitve:

Drsenje tako, da je izbrani element na vrhu, ko razširite spustni meni

To naredi skript. Dodajte skript v projekt in ga poimenujte , DropdownScroll vendar je ime poljubno.

Ko odprete urejevalnik skriptov, vnesite naslednje:

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

Vsebina kode ni tako zapletena. Ko je spustni meni razširjen, se položaj drsenja izračuna in nastavi tako, da je izbrani element na vrhu.

Start Razlog za pisanje v metodo je, ker predvideva, da bo postopek inicializacije deloval vsakič, ko se spustni meni razširi.

Ko shranite kodo, priložite ta Dropdown Template skript .

Temolate Predmeti pod njim se ustvarijo, ko se spustni meni razširi po izvedbi igre. Priložena komponenta je inicializirana tudi v času uvajanja. Tudi, ko je spustni meni zaprt, se razširjeni objekt uniči, Če ga znova uvedete, bo znova ustvarjen, tako da bo postopek inicializacije izveden po vsakem uvajanju.

Poskusimo.

Kot je navedeno zgoraj, spustni meni, ki ni izvedel nobenega dejanja, ne bo viden, tudi če ga razširite s spodnjim izbranim elementom. Če pa razširite spustni meni, ki smo ga obravnavali, lahko vidite, da se pomakne do točke, kjer si lahko ogledate izbrani element.