Desplácese para que el elemento seleccionado esté en la parte superior de la lista de elementos desplegables
Entorno de verificación
- Windows
-
- Windows 11
- Unity Editor
-
- 2020.3.25f1
Requisitos previos para esta sugerencia
Los siguientes ajustes se han realizado de antemano como requisito previo para la explicación de estos consejos.
Al mostrar la lista de elementos desplegables, siempre se muestra el elemento superior.
Si el número de elementos desplegables es mayor que el área desplegable, se mostrará el desplazamiento, En ese momento, el primer elemento que se muestra siempre será el elemento en la parte superior.
Esto también es cierto cuando el elemento de la parte inferior está seleccionado y expandido.
Sin embargo, algunas personas pueden querer que el elemento que están seleccionando esté en la parte superior de la lista cuando se expande. Para dar cabida a esto, debe configurar las siguientes opciones adicionales:
Desplácese para que el elemento seleccionado esté en la parte superior al expandir el menú desplegable
Esto se hace mediante un script. Agregue un script a su proyecto y asígnele un nombre, DropdownScroll
pero el nombre es arbitrario.
Al abrir el Editor de scripts, introduzca lo siguiente:
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 contenido del código no es tan complicado. Cuando se expande el menú desplegable, la posición de desplazamiento se calcula y se establece para que el elemento seleccionado esté en la parte superior.
Start
La razón para escribirlo en el método es porque asume que el proceso de inicialización funcionará cada vez que se expanda el menú desplegable.
Después de guardar el código, adjunte este Dropdown
Template
script a .
Temolate
Los objetos debajo de él se generan cuando el menú desplegable se expande después de que se ejecuta el juego.
El componente adjunto también se inicializa en el momento de la implementación.
Además, cuando se cierra el menú desplegable, se destruye el objeto expandido,
Si lo implementa de nuevo, se generará nuevamente, por lo que el proceso de inicialización se ejecutará después de cada implementación.
Vamos a intentarlo.
Como se mencionó anteriormente, el menú desplegable que no ha realizado ninguna acción no será visible incluso si lo expande con el elemento a continuación seleccionado. Por otro lado, si expandes el desplegable que hemos abordado, puedes ver que se desplaza hasta el punto en el que puedes ver el elemento seleccionado.