स्क्रॉल करें ताकि चयनित आइटम ड्रॉप-डाउन आइटम्स की सूची में सबसे ऊपर हो

पेज अद्यतन :
पेज निर्माण की तारीख :

सत्यापन वातावरण

विंडोज़
  • विंडोज 11
एकता संपादक
  • 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 इसके तहत ऑब्जेक्ट उत्पन्न होते हैं जब गेम निष्पादित होने के बाद ड्रॉप-डाउन का विस्तार किया जाता है। तैनाती के समय संलग्न घटक भी प्रारंभ किया जाता है। इसके अलावा, जब ड्रॉप-डाउन बंद हो जाता है, तो विस्तारित वस्तु नष्ट हो जाती है, यदि आप इसे फिर से तैनात करते हैं, तो यह फिर से उत्पन्न होगा, इसलिए प्रत्येक परिनियोजन के बाद प्रारंभिक प्रक्रिया निष्पादित की जाएगी।

चलो कोशिश करते हैं।

जैसा कि ऊपर उल्लेख किया गया है, जिस ड्रॉप-डाउन ने कोई कार्रवाई नहीं की है, वह दिखाई नहीं देगा, भले ही आप इसे नीचे चयनित आइटम के साथ विस्तारित करें। दूसरी ओर, यदि आप हमारे द्वारा संबोधित ड्रॉप-डाउन का विस्तार करते हैं, तो आप देख सकते हैं कि यह उस बिंदु पर स्क्रॉल किया गया है जहां आप चयनित आइटम देख सकते हैं।