UI ऑब्जेक्ट्स के चयन के माध्यम से लूप करें

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

सत्यापन परिवेश

विंडोज़
  • विंडोज 11
एकता संपादक
  • 2020.3.25एफ1

इस टिप के लिए आवश्यक शर्तें

इन युक्तियों के स्पष्टीकरण के लिए एक शर्त के रूप में निम्नलिखित सेटिंग्स अग्रिम रूप से बनाई गई हैं।

हवाला

नमूना UI ऑब्जेक्ट परिनियोजित करना

बटन को कैनवास पर निम्नानुसार रखें: स्पष्टता के लिए चयनित ऑब्जेक्ट हरे रंग में प्रदर्शित होता है.

आप केवल उन ऑब्जेक्ट्स का चयन कर सकते हैं जो चयनित दिशा में हैं।

जब आप UI ऑब्जेक्ट रखते हैं, तो आप प्रारंभ में निर्दिष्ट दिशा में UI ऑब्जेक्ट का चयन करने के लिए कीबोर्ड या गेमपैड पर तीर कुंजियाँ दबा सकते हैं। यह बहुत सहज और समझने में आसान है, इसलिए मुझे नहीं लगता कि आपको सेटिंग्स बदलने से परेशान होने की आवश्यकता है।

हालांकि, मेनू जैसे लेआउट में, चयन लूप ऑपरेशन करना संभव नहीं है जैसे कि डिफ़ॉल्ट रूप से "नीचे का चयन करते समय नीचे दबाए जाने पर शीर्ष पर लौटें"।

ऊपर दिए गए चित्र में, आप Button1 का चयन करते समय नीचे दबाकर Button3 का चयन नहीं कर सकते। बेशक, यदि आप बटन 1 का चयन करते समय दबाते हैं, तो आप बटन 3 का चयन नहीं कर पाएंगे।

चयन के माध्यम से लूप करें

यहां, हम एक तंत्र बनाएंगे जो आपको चयनों के माध्यम से अंतहीन रूप से लूप करने की अनुमति देता है। नमूना लेआउट में, आप Button3 चयनित है, जबकि नीचे दबाकर Button1 का चयन कर सकते हैं, और आप Button3 का चयन करते हुए बटन 1 का चयन कर सकते हैं.

यह नियंत्रण किसी स्क्रिप्ट में किया जाता है. यह एक सामान्य उद्देश्य वाली स्क्रिप्ट है जिसका उपयोग कम संख्या में विवरणों के साथ किया जा सकता है और इसका उपयोग अन्य दृश्यों की तरह किया जा सकता है। इसके बजाय, निम्नलिखित प्रतिबंध लागू होते हैं:

  • आप केवल एक दिशा में ऊपर और नीचे जा सकते हैं।
  • निर्दिष्ट ऑब्जेक्ट के तहत सभी Selectable मौजूदा पर लागू होता है

इसलिए, उपयोग का लक्ष्य उन मेनू तक सीमित है जो ऊपर और नीचे स्क्रॉल करके चुने जाते हैं, लेकिन यदि आप अपने आप को उस लेआउट तक सीमित करते हैं तो यह बहुत उपयोगी है। वैसे, यह ऊपर और नीचे तक सीमित है, लेकिन यदि आप स्क्रिप्ट को थोड़ा संशोधित करते हैं, तो आप इसे बाएं और दाएं तक सीमित कर सकते हैं।

अपने प्रोजेक्ट में एक स्क्रिप्ट बनाएँ। आप इसे कुछ भी नाम दे सकते हैं, लेकिन मैं इसे छोड़ दूंगा SelectLoop

स्क्रिप्ट इस तरह दिखती है:

using UnityEngine;
using UnityEngine.UI;  // 追加

public class SelectLoop : MonoBehaviour
{
  // 最初のフレーム更新の前に開始が呼び出されます
  void Start()
  {
    // ボタンなど選択可能なコンポーネントを取得する
    var selects = GetComponentsInChildren<Selectable>();
    for (var i = 0; i < selects.Length; i++)
    {
      var nav = selects[i].navigation;
      nav.mode = Navigation.Mode.Explicit;
      nav.selectOnUp = selects[i == 0 ? selects.Length - 1 : i - 1];
      nav.selectOnDown = selects[(i + 1) % selects.Length];
      selects[i].navigation = nav;
    }
  }

  // 更新はフレームごとに1回呼び出されます
  void Update() { }
}

हम जो कर रहे हैं वह कुंजी चयन व्यवहार navigation के लिए निम्नलिखित सेटिंग्स बना रहा है .

  • पिछले ऑब्जेक्ट का चयन करने के लिए ऊपर कुंजी दबाएँ, और पहले ऑब्जेक्ट का चयन करने के लिए अंतिम ऑब्जेक्ट का चयन करें।
  • अगले ऑब्जेक्ट का चयन करने के लिए डाउन कुंजी दबाएँ, या यदि यह अंतिम ऑब्जेक्ट है तो पहले ऑब्जेक्ट का चयन करें।

वैसे, इस ऑब्जेक्ट का क्रम (चयन) पदानुक्रम के क्रम पर निर्भर करता है। उन्हें उस क्रम में व्यवस्थित करें जिस क्रम में आप उन्हें पदानुक्रम में चुनना चाहते हैं।

स्क्रिप्ट को सहेजने के बाद, इसे एक घटक के रूप में संलग्न करें। इस स्क्रिप्ट को संलग्न ऑब्जेक्ट Selectable में लागू किया जाएगा, इसलिए इस बार Canvas हम संलग्न करेंगे।

इसे स्थानांतरित करने का प्रयास करें और देखें कि क्या आप इसे कीस्ट्रोक के साथ बटन 1 और बटन 3 के बीच ले जा सकते हैं।