Превъртете, така че избраният елемент да е в горната част на списъка с падащи елементи

Страницата се актуализира :
Дата на създаване на страница :

Среда за проверка

Уиндоус
  • Прозорци 11
Редактор на единство
  • 2020.3.25ф1

Предпоставки за този съвет

Следните настройки са направени предварително като предпоставка за обяснението на тези съвети.

Когато се показва падащият списък с елементи, винаги се показва най-горният елемент.

Ако броят на падащите елементи е по-голям от падащата област, ще се покаже превъртане, По това време първият показан елемент винаги ще бъде елементът в горната част.

Това важи и когато елементът в долната част е избран и разширен.

Някои хора обаче може да искат елемента, който избират, в горната част на списъка, когато е разгънат. За да се приспособите към това, трябва да конфигурирате следните допълнителни настройки:

Превъртете, така че избраният елемент да е най-отгоре, когато разширявате падащото меню

Това се прави по сценарий. Добавете скрипт към вашия проект и го именувайте , DropdownScroll но името е произволно.

Когато отворите редактора на скриптове, въведете следното:

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

Съдържанието на кода не е толкова сложно. Когато падащото меню се разгъне, позицията на превъртане се изчислява и задава така, че избраният елемент да е най-отгоре.

Start Причината за написването му в метода е, защото той предполага, че процесът на инициализация ще работи всеки път, когато падащото меню се разширява.

След като запишете кода, прикачете този Dropdown Template скрипт към .

Temolate Обектите под него се генерират, когато падащото меню се разшири след изпълнението на играта. Прикаченият компонент също се инициализира по време на разполагането. Също така, когато падащото меню е затворено, разширеният обект се унищожава, Ако го разположите отново, той ще бъде генериран отново, така че процесът на инициализация ще се изпълнява след всяко разполагане.

Да опитаме.

Както бе споменато по-горе, падащото меню, което не е предприело никакво действие, няма да бъде видимо, дори ако го разширите с избрания по-долу елемент. От друга страна, ако разгънете падащото меню, което разгледахме, можете да видите, че то се превърта до точката, където можете да видите избрания елемент.