Skrol supaya item yang dipilih berada di bahagian atas senarai item juntai bawah

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran pengesahan

Windows
  • Windows 11
Penyunting Perpaduan
  • 2020.3.25f1

Prasyarat untuk petua ini

Tetapan berikut telah dibuat terlebih dahulu sebagai prasyarat untuk penjelasan petua ini.

Apabila memaparkan senarai item juntai bawah, item atas sentiasa dipaparkan.

Jika bilangan item juntai bawah lebih besar daripada kawasan juntai bawah, skrol akan dipaparkan, Pada masa itu, item pertama yang dipaparkan akan sentiasa menjadi item di bahagian atas.

Ini juga benar apabila item di bahagian bawah dipilih dan diperluaskan.

Walau bagaimanapun, sesetengah orang mungkin mahukan item yang mereka pilih di bahagian atas senarai apabila dikembangkan. Untuk menampung ini, anda perlu mengkonfigurasi seting tambahan berikut:

Skrol supaya item yang dipilih berada di bahagian atas apabila mengembangkan juntai bawah

Ini dilakukan oleh skrip. Tambah skrip pada projek anda dan namakannya , DropdownScroll tetapi nama itu sewenang-wenangnya.

Apabila anda membuka Editor Skrip, masukkan yang berikut:

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

Kandungan kod itu tidak begitu rumit. Apabila juntai bawah dikembangkan, kedudukan skrol dikira dan disetkan supaya item yang dipilih berada di bahagian atas.

Start Sebab untuk menulisnya dalam kaedah ini adalah kerana ia menganggap bahawa proses permulaan akan berfungsi setiap kali dropdown diperluaskan.

Selepas anda menyimpan kod, lampirkan skrip ini Dropdown Template ke .

Temolate Objek di bawahnya dijana apabila drop-down diperluaskan selepas permainan dilaksanakan. Komponen yang dilampirkan juga dimulakan pada masa penggunaan. Juga, apabila drop-down ditutup, objek yang diperluas dimusnahkan, Jika anda menggunakannya semula, ia akan dijana semula, jadi proses permulaan akan dilaksanakan selepas setiap penggunaan.

Mari cuba.

Seperti yang dinyatakan di atas, menu lungsur yang tidak mengambil sebarang tindakan tidak akan kelihatan walaupun anda mengembangkannya dengan item di bawah yang dipilih. Sebaliknya, jika anda mengembangkan juntai bawah yang kami alamatkan, anda dapat melihat bahawa ia dinatal ke titik di mana anda dapat melihat item yang dipilih.