Scrollen Sie so, dass sich das ausgewählte Element ganz oben in der Liste der Dropdown-Elemente befindet

Diese Seite wurde aktualisiert :
Erstellungsdatum der Seite :

Verifikations-Umgebung

Fenster
  • Windows 11
Unity-Editor
  • 2020.3.25f1

Voraussetzungen für diesen Tipp

Die folgenden Einstellungen wurden im Vorfeld als Voraussetzung für die Erklärung dieser Tipps vorgenommen.

Bei der Anzeige der Dropdown-Elementliste wird immer das oberste Element angezeigt.

Wenn die Anzahl der Dropdown-Elemente größer als der Dropdown-Bereich ist, wird das Scrollen angezeigt. Zu diesem Zeitpunkt wird immer als erstes Element das Element oben angezeigt.

Dies gilt auch, wenn das Element am unteren Rand ausgewählt und erweitert ist.

Einige Benutzer möchten jedoch möglicherweise, dass das Element, das sie auswählen, oben in der Liste angezeigt wird, wenn es erweitert wird. Um dies zu ermöglichen, müssen Sie die folgenden zusätzlichen Einstellungen konfigurieren:

Scrollen Sie so, dass sich das ausgewählte Element oben befindet, wenn Sie die Dropdownliste erweitern

Dies geschieht durch ein Skript. Fügen Sie Ihrem Projekt ein Skript hinzu und benennen Sie es , DropdownScroll aber der Name ist beliebig.

Wenn Sie den Skript-Editor öffnen, geben Sie Folgendes ein:

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

Der Inhalt des Codes ist nicht so kompliziert. Wenn das Dropdown-Menü erweitert wird, wird die Bildlaufposition berechnet und so festgelegt, dass sich das ausgewählte Element oben befindet.

Start Der Grund für das Schreiben in die Methode liegt darin, dass davon ausgegangen wird, dass der Initialisierungsprozess jedes Mal funktioniert, wenn die Dropdownliste erweitert wird.

Nachdem Sie den Code gespeichert haben, fügen Sie dieses Dropdown Template Skript an .

Temolate Die darunter liegenden Objekte werden generiert, wenn das Dropdown-Menü nach dem Ausführen des Spiels erweitert wird. Die angehängte Komponente wird ebenfalls zum Zeitpunkt der Bereitstellung initialisiert. Wenn die Dropdown-Liste geschlossen wird, wird das erweiterte Objekt zerstört. Wenn Sie es erneut bereitstellen, wird es erneut generiert, sodass der Initialisierungsprozess nach jeder Bereitstellung ausgeführt wird.

Probieren wir es aus.

Wie oben erwähnt, ist das Dropdown-Menü, das keine Aktion ausgeführt hat, auch dann nicht sichtbar, wenn Sie es mit dem unten ausgewählten Element erweitern. Wenn Sie hingegen das Dropdown-Menü erweitern, das wir angesprochen haben, können Sie sehen, dass es bis zu dem Punkt gescrollt wird, an dem Sie das ausgewählte Element sehen können.