تكرار حلقي خلال تحديد كائنات واجهة المستخدم

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

بيئة التحقق

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

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

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

مرجع

نشر كائنات واجهة المستخدم النموذجية

ضع الزر على اللوحة القماشية كما يلي: يتم عرض الكائن المحدد باللون الأخضر من أجل الوضوح.

يمكنك فقط تحديد الكائنات الموجودة في الاتجاه المحدد.

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

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

في الشكل أعلاه ، لا يمكنك تحديد Button1 بالضغط لأسفل أثناء تحديد Button3. بالطبع ، إذا ضغطت لأعلى أثناء تحديد Button1 ، فلن تتمكن من تحديد Button3.

تكرار الحلقات خلال التحديدات

هنا ، سننشئ آلية تسمح لك بالتكرار خلال التحديدات إلى ما لا نهاية. في نموذج التخطيط، يمكنك تحديد Button1 بالضغط لأسفل أثناء تحديد Button3، ويمكنك تحديد Button3 بالضغط لأعلى أثناء تحديد Button1.

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

  • يمكنك فقط التحرك صعودا وهبوطا في اتجاه واحد.
  • ينطبق على كل 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 بضغطة مفتاح.