Desplaceu-vos de manera que l'element seleccionat es trobi a la part superior de la llista d'elements desplegables

Pàgina actualitzada :
Data de creació de la pàgina :

Entorn de verificació

Windows
  • Finestres 11
Editor d'unitat
  • 25.3.2020

Requisits previs per a aquest consell

Els següents paràmetres s'han fet amb antelació com a requisit previ per a l'explicació d'aquests consells.

Quan es mostra la llista d'elements desplegables, sempre es mostra l'element superior.

Si el nombre d'elements desplegables és superior a l'àrea desplegable, es mostrarà el desplaçament, En aquest moment, el primer element que es mostri sempre serà l'element de la part superior.

Això també és cert quan l'element de la part inferior està seleccionat i ampliat.

Tanmateix, és possible que algunes persones vulguin l'element que seleccionen a la part superior de la llista quan s'ampliï. Per adaptar-vos-hi, heu de configurar els paràmetres addicionals següents:

Desplaceu-vos de manera que l'element seleccionat es trobi a la part superior quan amplieu el menú desplegable

Això es fa mitjançant un guió. Afegiu un script al vostre projecte i anomeneu-lo , DropdownScroll però el nom és arbitrari.

Quan obris l'Editor de Scripts, introdueix el següent:

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

El contingut del codi no és tan complicat. Quan el menú desplegable s'amplia, la posició de desplaçament es calcula i es defineix de manera que l'element seleccionat es trobi a la part superior.

Start La raó per escriure-la en el mètode és perquè suposa que el procés d'inicialització funcionarà cada vegada que s'ampliï el desplegable.

Després de desar el codi, adjunteu aquest Dropdown Template script a .

Temolate Els objectes que hi ha a sota es generen quan el menú desplegable s'expandeix després d'executar la partida. El component adjunt també s'inicialitza en el moment del desplegament. A més, quan es tanca el desplegable, l'objecte expandit es destrueix, Si el torneu a desplegar, es tornarà a generar, de manera que el procés d'inicialització s'executarà després de cada desplegament.

Provem-ho.

Com s'ha esmentat anteriorment, el menú desplegable que no hagi fet cap acció no serà visible encara que l'amplieu amb l'element següent seleccionat. D'altra banda, si amplieu el desplegable que hem abordat, podreu veure que es desplaça fins al punt on podeu veure l'element seleccionat.