Görgessen addig, amíg a kijelölt elem a legördülő elemek listájának tetején jelenik meg

Oldal frissítve :
Oldal létrehozásának dátuma :

Ellenőrzési környezet

Windows
  • Windows 11 esetén
Unity-szerkesztő
  • 2020.3.25f1

A tipp előfeltételei

A következő beállításokat előre elvégeztük a tippek magyarázatának előfeltételeként.

A legördülő elemlista megjelenítésekor mindig a legfelső elem jelenik meg.

Ha a legördülő elemek száma nagyobb, mint a legördülő terület, megjelenik a görgetés, Ekkor az elsőként megjelenő elem mindig a tetején lévő elem lesz.

Ez akkor is igaz, ha az alul lévő elemet kijelöli és kibontja.

Előfordulhat azonban, hogy egyesek kibontáskor a lista tetején szeretnék megjeleníteni a kijelölt elemet. Ennek eléréséhez a következő további beállításokat kell konfigurálnia:

Görgessen úgy, hogy a kijelölt elem felül legyen a legördülő menü kibontásakor

Ezt egy szkript végzi. Adjon hozzá egy szkriptet a projekthez, és nevezze el, DropdownScroll de a név tetszőleges.

A Szkriptszerkesztő megnyitásakor írja be a következőket:

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

A kód tartalma nem olyan bonyolult. A legördülő menü kibontásakor a rendszer kiszámítja a görgetési pozíciót, és úgy állítja be, hogy a kiválasztott elem felül legyen.

Start A metódusba írásának oka az, hogy feltételezi, hogy az inicializálási folyamat minden alkalommal működni fog, amikor a legördülő menüt kibontják.

A kód mentése után csatolja ezt Dropdown Template a szkriptet a következőhöz: .

Temolate Az alatta lévő objektumok akkor jönnek létre, amikor a legördülő menü a játék végrehajtása után bővül. A csatlakoztatott összetevő inicializálása is az üzembe helyezéskor történik. Továbbá, ha a legördülő menü bezáródik, a kibontott objektum megsemmisül, Ha újra üzembe helyezi, a rendszer újra létrehozza azt, így az inicializálási folyamat minden üzembe helyezés után végrehajtásra kerül.

Próbáljuk ki.

Ahogy fentebb említettük, az a legördülő menü, amely nem hajtott végre semmilyen műveletet, akkor sem lesz látható, ha az alábbi elemmel bővíti. Másrészt, ha kibontja az általunk kezelt legördülő menüt, láthatja, hogy addig a pontig görget, ahol láthatja a kiválasztott elemet.