یو آئی آبجیکٹس کے انتخاب کے ذریعے لوپ کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

تصدیق کا ماحول

Windows
  • ونڈوز 11
یونٹی ایڈیٹر
  • 2020.3.25f1

اس ٹوٹکے کے لئے ضروری شرائط

مندرجہ ذیل ترتیبات ان تجاویز کی وضاحت کے لئے ایک شرط کے طور پر پیشگی کی گئی ہیں.

اشارہ

سیمپل UI آبجیکٹس کی تعیناتی

کینوس پر بٹن کو مندرجہ ذیل کے طور پر رکھیں: منتخب کردہ آبجیکٹ کو وضاحت کے لئے سبز رنگ میں دکھایا گیا ہے۔

آپ صرف ان آبجیکٹس کو منتخب کرسکتے ہیں جو منتخب سمت میں ہیں۔

جب آپ یو آئی آبجیکٹ رکھتے ہیں تو ، آپ ابتدائی طور پر مخصوص سمت میں یو آئی آبجیکٹ کو منتخب کرنے کے لئے کی بورڈ یا گیم پیڈ پر تیر کی چابیاں دبا سکتے ہیں۔ یہ بہت بدیہی اور سمجھنے میں آسان ہے ، لہذا مجھے نہیں لگتا کہ آپ کو ترتیبات کو تبدیل کرنے کی زحمت کرنے کی ضرورت ہے۔

تاہم ، مینو جیسی ترتیب میں ، انتخاب لوپ آپریشن انجام دینا ممکن نہیں ہے جیسے "جب آپ نیچے دباتے ہیں جبکہ نیچے کا انتخاب ہوتا ہے تو اوپر کی طرف واپس جائیں"۔

مندرجہ بالا تصویر میں ، آپ بٹن 3 کو منتخب کرتے ہوئے نیچے دبا کر بٹن 1 منتخب نہیں کرسکتے ہیں۔ یقینا ، اگر آپ بٹن 1 منتخب ہونے کے دوران دباتے ہیں تو ، آپ بٹن 3 کو منتخب نہیں کرسکیں گے۔

انتخاب کے ذریعے لوپ کریں

یہاں ، ہم ایک میکانزم بنائیں گے جو آپ کو لامحدود انتخاب کے ذریعے لوپ کرنے کی اجازت دیتا ہے۔ نمونے کی ترتیب میں ، آپ بٹن 1 کو دبا کر منتخب کرسکتے ہیں جبکہ بٹن 3 منتخب کیا گیا ہے ، اور آپ بٹن 1 کو دبا کر بٹن 3 منتخب کرسکتے ہیں۔

یہ کنٹرول ایک اسکرپٹ میں کیا جاتا ہے۔ یہ ایک عام مقصد کا اسکرپٹ ہے جسے مختصر تعداد میں وضاحت کے ساتھ استعمال کیا جاسکتا ہے اور دوسرے مناظر کی طرح استعمال کیا جاسکتا ہے۔ اس کے بجائے، مندرجہ ذیل پابندیاں لاگو ہوتی ہیں:

  • آپ صرف ایک ہی سمت میں اوپر اور نیچے جا سکتے ہیں.
  • مخصوص آبجیکٹ کے تحت موجود تمام 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 کے درمیان منتقل کرسکتے ہیں۔