Seçili öğe, açılan öğeler listesinin en üstünde olacak şekilde kaydırın
Doğrulama ortamı
- Windows
-
- pencereler 11
- Unity Düzenleyicisi
-
- 2020.3.25f1
Bu ipucu için önkoşullar
Bu ipuçlarının açıklanması için ön koşul olarak aşağıdaki ayarlar önceden yapılmıştır.
Açılır öğe listesini görüntülerken, her zaman en üstteki öğe görüntülenir.
Açılır öğelerin sayısı açılır alandan büyükse, kaydırma görüntülenecektir, O zaman, görüntülenen ilk öğe her zaman en üstteki öğe olacaktır.
Bu, alttaki öğe seçildiğinde ve genişletildiğinde de geçerlidir.
Ancak, bazı kişiler seçtikleri öğenin genişletildiğinde listenin en üstünde olmasını isteyebilir. Buna uyum sağlamak için aşağıdaki ek ayarları yapılandırmanız gerekir:
Açılır menüyü genişletirken seçili öğe en üstte olacak şekilde kaydırın
Bu bir komut dosyası tarafından yapılır. Projenize bir komut dosyası ekleyin ve adlandırın , DropdownScroll
ancak ad isteğe bağlıdır.
Komut Dosyası Düzenleyicisi'ni açtığınızda aşağıdakileri girin:
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);
}
}
Kodun içeriği o kadar karmaşık değil. Açılır menü genişletildiğinde, kaydırma konumu hesaplanır ve seçilen öğe en üstte olacak şekilde ayarlanır.
Start
Yöntemde yazmanın nedeni, açılır menü her genişletildiğinde başlatma işleminin çalışacağını varsaymasıdır.
Kodu kaydettikten sonra bu Dropdown
Template
komut dosyasını öğesine ekleyin.
Temolate
Altındaki nesneler, oyun yürütüldükten sonra açılır menü genişletildiğinde oluşturulur.
Eklenen bileşen de dağıtım sırasında başlatılır.
Ayrıca, açılır menü kapatıldığında, genişletilmiş nesne yok edilir,
Yeniden dağıtırsanız, yeniden oluşturulur, bu nedenle başlatma işlemi her dağıtımdan sonra yürütülür.
Hadi deneyelim.
Yukarıda belirtildiği gibi, herhangi bir işlem yapılmamış olan açılır menü, aşağıdaki öğe seçiliyken genişletseniz bile görünmeyecektir. Öte yandan, ele aldığımız açılır menüyü genişletirseniz, seçilen öğeyi görebileceğiniz noktaya kaydırıldığını görebilirsiniz.