Vieritä niin, että valittu kohde on avattavien kohteiden luettelon yläosassa

Sivu päivitetty :
Sivun luontipäivämäärä :

Varmennusympäristö

Windows
  • Windows 11
Unity-editori
  • 2020.3.25F1

Tämän vinkin edellytykset

Seuraavat asetukset on tehty etukäteen edellytyksenä näiden vinkkien selittämiselle.

Kun avattavaa kohdeluetteloa näytetään, ylin kohde näkyy aina.

Jos avattavien kohteiden määrä on suurempi kuin avattava alue, vieritys tulee näkyviin, Tuolloin ensimmäinen näytettävä kohde on aina yläosassa oleva kohde.

Tämä pätee myös silloin, kun alareunassa oleva kohde valitaan ja laajennetaan.

Jotkut saattavat kuitenkin haluta, että heidän valitsemansa kohde on luettelon yläosassa, kun sitä laajennetaan. Tätä varten sinun on määritettävä seuraavat lisäasetukset:

Vieritä niin, että valittu kohde on ylhäällä, kun laajennat avattavaa valikkoa

Tämä tehdään komentosarjalla. Lisää komentosarja projektiisi ja nimeä se , DropdownScroll mutta nimi on mielivaltainen.

Kun avaat Skriptieditorin, kirjoita seuraavat tiedot:

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

Koodin sisältö ei ole niin monimutkainen. Kun avattavaa valikkoa laajennetaan, vierityspaikka lasketaan ja asetetaan siten, että valittu kohde on ylimpänä.

Start Syy sen kirjoittamiseen menetelmään johtuu siitä, että siinä oletetaan, että alustusprosessi toimii aina, kun avattavaa valikkoa laajennetaan.

Kun olet tallentanut koodin, liitä tämä Dropdown Template komentosarja .

Temolate Sen alla olevat objektit luodaan, kun avattavaa valikkoa laajennetaan pelin suorittamisen jälkeen. Liitetty komponentti alustetaan myös käyttöönoton yhteydessä. Lisäksi, kun avattava valikko suljetaan, laajennettu objekti tuhoutuu, Jos otat sen uudelleen käyttöön, se luodaan uudelleen, joten alustusprosessi suoritetaan jokaisen käyttöönoton jälkeen.

Kokeillaan sitä.

Kuten edellä mainittiin, avattava valikko, joka ei ole tehnyt mitään, ei ole näkyvissä, vaikka laajennat sen alla olevan kohteen ollessa valittuna. Toisaalta, jos laajennat käsittelemäämme avattavaa valikkoa, näet, että sitä vieritetään kohtaan, jossa näet valitun kohteen.