Görgessen addig, amíg a kijelölt elem a legördülő elemek listájának tetején jelenik meg
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.