גלול כך שהפריט שנבחר יופיע בראש רשימת הפריטים הנפתחים

עודכן דף :
תאריך יצירת דף :

סביבת אימות

חלונות
  • חלונות 11
עורך Unity
  • 2020.3.25F1

תנאים מוקדמים לטיפ זה

ההגדרות הבאות נעשו מראש כתנאי מוקדם להסבר על טיפים אלה.

בעת הצגת רשימת הפריטים הנפתחת, הפריט העליון מוצג תמיד.

אם מספר הפריטים הנפתחים גדול מהאזור הנפתח, תוצג גלילה, בשלב זה, הפריט הראשון המוצג תמיד יהיה הפריט בחלק העליון.

הדבר נכון גם כאשר הפריט בתחתית נבחר ומורחב.

עם זאת, ייתכן שאנשים מסוימים ירצו את הפריט שהם בוחרים בראש הרשימה כאשר הוא מורחב. כדי להתאים זאת, עליך להגדיר את ההגדרות הנוספות הבאות:

גלול כך שהפריט שנבחר יופיע בחלק העליון בעת הרחבת הרשימה הנפתחת

זה נעשה על ידי תסריט. הוסף קובץ Script לפרוייקט שלך ותן לו שם , 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 הסיבה לכתיבתו בשיטה היא מכיוון שהוא מניח שתהליך האתחול יעבוד בכל פעם שהתפריט הנפתח יורחב.

לאחר שמירת הקוד, צרף קובץ script זה Dropdown Template ל- .

Temolate האובייקטים שמתחתיו נוצרים כאשר התפריט הנפתח מורחב לאחר הפעלת המשחק. הרכיב המצורף מאותחל גם הוא בזמן הפריסה. כמו כן, כאשר התפריט הנפתח סגור, האובייקט המורחב נהרס, אם תפרוס אותו שוב, הוא ייווצר שוב, כך שתהליך האתחול יבוצע לאחר כל פריסה.

בואו ננסה את זה.

כפי שצוין לעיל, התפריט הנפתח שלא ביצע פעולה כלשהי לא יהיה גלוי גם אם תרחיב אותו עם הפריט שלהלן נבחר. מצד שני, אם תרחיב את התפריט הנפתח שהתייחסנו אליו, תוכל לראות שהוא נגלל עד לנקודה שבה תוכל לראות את הפריט שנבחר.