قم بالتمرير بحيث يكون العنصر المحدد في أعلى قائمة العناصر المنسدلة

تحديث الصفحة :
تاريخ إنشاء الصفحة :

بيئة التحقق

نوافذ
  • ويندوز ١١
محرر الوحدة
  • 2020.3.25f1

المتطلبات الأساسية لهذه النصيحة

تم إجراء الإعدادات التالية مسبقا كشرط أساسي لشرح هذه النصائح.

عند عرض قائمة العناصر المنسدلة ، يتم عرض العنصر العلوي دائما.

إذا كان عدد العناصر المنسدلة أكبر من المنطقة المنسدلة ، عرض التمرير ، في ذلك الوقت ، سيكون العنصر الأول المعروض دائما هو العنصر الموجود في الأعلى.

هذا صحيح أيضا عند تحديد العنصر الموجود في الأسفل وتوسيعه.

ومع ذلك ، قد يرغب بعض الأشخاص في العنصر الذي يحددونه في أعلى القائمة عند توسيعه. لاستيعاب هذا ، تحتاج إلى تكوين الإعدادات الإضافية التالية:

قم بالتمرير بحيث يكون العنصر المحدد في الأعلى عند توسيع القائمة المنسدلة

يتم ذلك عن طريق برنامج نصي. أضف نصا برمجيا إلى مشروعك وقم بتسميته ، 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 يتم إنشاء الكائنات الموجودة تحتها عند توسيع القائمة المنسدلة بعد تنفيذ اللعبة. تتم تهيئة المكون المرفق أيضا في وقت النشر. أيضا ، عند إغلاق القائمة المنسدلة ، يتم تدمير الكائن الموسع ، إذا قمت بنشره مرة أخرى، إنشاؤه مرة أخرى، لذلك سيتم تنفيذ عملية التهيئة بعد كل عملية نشر.

لنجربها.

كما ذكر أعلاه ، لن تكون القائمة المنسدلة التي لم تتخذ أي إجراء مرئية حتى إذا قمت بتوسيعها مع تحديد العنصر أدناه. من ناحية أخرى ، إذا قمت بتوسيع القائمة المنسدلة التي تناولناها ، يمكنك أن ترى أنه تم تمريرها إلى النقطة التي يمكنك فيها رؤية العنصر المحدد.