Faites défiler l’écran pour que l’élément sélectionné apparaisse en haut de la liste déroulante

Page mise à jour :
Date de création de la page :

Environnement de vérification

Windows
  • Fenêtres 11
Éditeur Unity
  • 2020.3.25f1

Conditions préalables à cette astuce

Les réglages suivants ont été effectués à l’avance comme condition préalable à l’explication de ces conseils.

Lors de l’affichage de la liste déroulante des éléments, l’élément principal est toujours affiché.

Si le nombre d’éléments de la liste déroulante est supérieur à la zone de la liste déroulante, le défilement s’affiche, À ce moment-là, le premier élément affiché sera toujours l’élément en haut.

Cela est également vrai lorsque l’élément en bas est sélectionné et développé.

Cependant, certaines personnes peuvent souhaiter que l’élément qu’elles sélectionnent apparaisse en haut de la liste lorsqu’il est développé. Pour ce faire, vous devez configurer les paramètres supplémentaires suivants :

Faites défiler l’écran de manière à ce que l’élément sélectionné apparaisse en haut lors du développement de la liste déroulante

Cela se fait par un script. Ajoutez un script à votre projet et nommez-le , DropdownScroll mais le nom est arbitraire.

Lorsque vous ouvrez l’éditeur de script, entrez les informations suivantes :

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

Le contenu du code n’est pas si compliqué. Lorsque la liste déroulante est développée, la position de défilement est calculée et définie de manière à ce que l’élément sélectionné se trouve en haut.

Start La raison pour laquelle il est écrit dans la méthode est qu’elle suppose que le processus d’initialisation fonctionnera à chaque fois que la liste déroulante est développée.

Après avoir enregistré le code, joignez ce Dropdown Template script à .

Temolate Les objets situés en dessous sont générés lorsque la liste déroulante est développée après l’exécution du jeu. Le composant attaché est également initialisé au moment du déploiement. De plus, lorsque la liste déroulante est fermée, l’objet développé est détruit, Si vous le déployez à nouveau, il sera généré à nouveau, de sorte que le processus d’initialisation sera exécuté après chaque déploiement.

Essayons-le.

Comme mentionné ci-dessus, la liste déroulante qui n’a effectué aucune action ne sera pas visible même si vous la développez avec l’élément ci-dessous sélectionné. D’autre part, si vous développez la liste déroulante que nous avons abordée, vous pouvez voir qu’elle défile jusqu’au point où vous pouvez voir l’élément sélectionné.