מעבר בלולאה לבחירת אובייקטי ממשק המשתמש
סביבת אימות
- חלונות
-
- חלונות 11
- עורך Unity
-
- 2020.3.25F1
תנאים מוקדמים לטיפ זה
ההגדרות הבאות נעשו מראש כתנאי מוקדם להסבר על טיפים אלה.
הפניה
פריסת אובייקטי ממשק משתמש לדוגמה
מקם את הלחצן על בד הציור באופן הבא: האובייקט שנבחר מוצג בירוק לבהירות.
ניתן לבחור רק עצמים בכיוון שנבחר.
בעת מיקום אובייקט ממשק משתמש, באפשרותך תחילה להקיש על מקשי החצים בלוח מקשים או ב- gamepad כדי לבחור את אובייקט ממשק המשתמש בכיוון שצוין. זה מאוד אינטואיטיבי וקל להבנה, אז אני לא חושב שאתה צריך לטרוח לשנות את ההגדרות.
עם זאת, בפריסה דמוית תפריט, לא ניתן לבצע פעולת לולאת בחירה כגון "חזור למעלה בעת לחיצה למטה כאשר החלק התחתון נבחר" כברירת מחדל.
באיור לעיל, לא ניתן לבחור Button1 על-ידי לחיצה למטה בזמן ש-Button3 נבחר. כמובן, אם תלחץ למעלה בזמן שנבחר Button1, לא תוכל לבחור Button3.
מעבר בלולאה בין בחירות
כאן, ניצור מנגנון המאפשר לך לעבור בלולאה בין הבחירות בלי סוף. בפריסה לדוגמה, באפשרותך לבחור Button1 על-ידי לחיצה כלפי מטה כאשר Button3 נבחר, ובאפשרותך לבחור Button3 על-ידי לחיצה למעלה כאשר Button1 נבחר.
פקד זה נעשה בקובץ Script. זהו תסריט כללי שניתן להשתמש בו עם מספר קטן של תיאורים וניתן להשתמש בו כמו בסצנות אחרות. במקום זאת, חלות ההגבלות הבאות:
- אתה יכול לנוע רק למעלה ולמטה בכיוון אחד.
- חל על כל
Selectable
הקיים תחת האובייקט שצוין
לכן, יעד השימוש מוגבל לתפריטים שנבחרו על ידי גלילה למעלה ולמטה, אך הוא שימושי מאוד אם אתה מגביל את עצמך לפריסה זו. אגב, הוא מוגבל העליון והתחתון, אבל אם אתה משנה את הסקריפט קצת, אתה יכול לעשות את זה מוגבל שמאל וימין.
צור קובץ Script בפרוייקט שלך. אתה יכול לקרוא לזה כל דבר, אבל אני אשאיר 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 בהקשה.