حلقه از طریق انتخاب اشیاء UI

صفحه به روز شده :
تاریخ ایجاد صفحه :

محیط تایید

ویندوز
  • ویندوز 11
ویرایشگر یونیتی
  • دانلود: 2020.3.25f1

پیشنیازهای این نکته

تنظیمات زیر از قبل به عنوان پیش نیاز برای توضیح این نکات ساخته شده است.

مرجع

استقرار نمونه UI اشیاء

دکمه را روی بوم به صورت زیر قرار دهید: شیء انتخاب شده برای وضوح به رنگ سبز نمایش داده می شود.

فقط می توانید اشیایی را انتخاب کنید که در جهت انتخاب شده باشند.

هنگامی که یک شیء UI را قرار می دهید، می توانید در ابتدا کلید های arrow را بر روی صفحه کلید یا گیم پد فشار دهید تا شی UI را در جهت مشخص شده انتخاب کنید. این بسیار بصری و اسان برای درک است، بنابراین من فکر نمی کنم شما نیاز به زحمت تغییر تنظیمات.

با این حال، در یک طرح منو مانند، انجام یک عملیات حلقه انتخاب مانند "بازگشت به بالا زمانی که شما پایین را فشار دهید در حالی که پایین انتخاب شده است" به طور پیش فرض امکان پذیر نیست.

در شکل بالا، شما نمی توانید 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 ما به ان متصل خواهیم شد.

سعی کنید ان را حرکت دهید و ببینید ایا می توانید ان را بین Button1 و Button3 با ضربه کلید حرکت دهید.