שימוש בלחצנים בממשק המשתמש של Unity

עודכן דף :
תאריך יצירת דף :

סביבת אימות

חלונות
  • חלונות 11
עורך Unity
  • 2020.3.25F1

תנאים מוקדמים לטיפ זה

ההגדרות הבאות נעשו מראש כתנאי מוקדם להסבר על טיפים אלה.

בהתחלה

כפתור יכול לשמש כאובייקט שהמשתמש לוחץ עליו בעצמו, או שהוא יכול לשמש כדי לבחור, כגון "כן" או "לא". אם ברצונך לפרט מעט יותר, באפשרותך להשתמש בלחצן כאובייקט לבחירת פריט רשימה, כגון תפריט.

בנוסף לכך, זה יכול לשמש גם למטרות באגים ובעת לחיצה על כפתור כדי לשנות את המדינה באופן שרירותי.

לחץ על הלחצן כדי לשנות את הטקסט

אם פשוט תלחץ על הכפתור, תעשה קצת עיבוד. הפעם, בכל פעם שתלחץ על הכפתור, מספר הטקסט יגדל ב -1.

מיקום וקביעת תצורה של ממשק משתמש

הוסף טקסט ולחצנים מההירארכיה לתצוגה.

אתה יכול למקם אותו בכל מקום כל עוד אתה שם אותו במקום שבו אתה יכול לראות אותו. מכיוון שקשה לראות במצב הראשוני, נקבעות הגדרות כגון "צבע טקסט לבן", "שינוי גודל", "הגדל את גודל הגופן" וכו '. תוכן הטקסט ישתנה באופן אוטומטי מאוחר יותר, כך שתוכל להשאיר אותו כ"טקסט חדש".

הגדרת התו של הלחצן מחולקת ל "כפתור" ו "טקסט", אז בחר טקסט ולהגדיר אותו.

הוספת סקריפטים

בחר את התיקיה סצינות מהפרוייקט, לחץ באמצעות לחצן העכבר הימני על שטח ריק ובחר C# Script כדי להוסיף אותו. במקור, עדיף ליצור את הסקריפט בתיקייה נפרדת, אבל אני אשמיט אותו לצורך בדיקת הפעולה.

שם הקובץ צריך להיות קל להבנה. הזן תווים אלפאנומריים רבים ככל האפשר. ButtonClick במקרה זה, הוא מוגדר ל- .

לאחר יצירתו, לחץ פעמיים על סקריפט C# כדי לפתוח את עורך הסקריפט. אם עורך הסקריפטים שלך הוא Visual Studio, אתה אמור לראות משהו כזה:

Startהשיטה אינה נחוצה הפעם, לכן מחק אותה, כתוב אותה מחדש ושמור אותה כדלקמן., Update

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;    // 追加

public class ButtonClick : MonoBehaviour
{
  /// <summary>カウントアップするテキストオブジェクト。</summary>
  [SerializeField] Text CountText;

  public void OnClick()
  {
  }
}

התחביר של C# אינו הנושא העיקרי של טיפ זה, ולכן לא אסביר אותו. אנא למדו בעצמכם. רק תיאורים ספציפיים לאחדות נדונים.

MonoBehaviour שדות שנכתבו במחלקות שיורשות מ יוכלו להיות מוגדרים בעורך האחדות. CountText כאן, אנו מגדירים אובייקט טקסט שנקרא על מנת שהוא יוצג, יש לפרסם אותו public עם . SerializeField עם זאת, אם תוסיף את התכונה, public תוכל להציג אותה בעורך עם נגישות שאינה . זהו תיאור טוב יותר אם אינך רוצה לגשת אליו ממחלקות אחרות ככל האפשר מלבד לצורך הגדרתו בעורך.

OnClick שיטות מסופקות כדי לתאר מה לעשות בעת לחיצה על לחצן. public יש להגדיר זאת ב- .

צירוף מעורך Unity

חזור אל Unity Editor ובחר מתוך ההירארכיה EventSystem .

EventSystem המפקח יופיע, לכן שחרר את סקריפט C# שיצרת זה עתה באזור "הוסף רכיב" למטה. התסריט מוכן כעת לעבודה.

למעשה, סקריפט זה יכול להיות מחובר לכל אובייקט, וזה Button צריך להיות מחובר לאובייקט. בטיפ זה, נוסיף כדי להקל על ההבנה EventSystem באופן אחיד . Button כמובן, אין בעיה לצרף אותו ל- . עם זאת, עדיף לא לצרף אותו לאובייקט לא קשור לחלוטין, כפי שהוא יגרום בלבול.

אם אתה מסתכל על הסקריפט שהוספת, אתה יכול לראות שהפריט "ספירת טקסט" מוצג. לאחר שתפרסם שדה בדרך זו, תוכל להגדיר את הערך מעורך האחדות. אנו רוצים לגשת לאובייקט הטקסט כאשר אנו לוחצים על הכפתור, לכן גרור מההיררכיה Text ושחרר Count Text אותו על . פעולה זו תאפשר לך לגשת אליו מהסקריפט שלך בכל עת.

לאחר מכן, בחר מתוך ההירארכיה Button ולחץ על + תחת בעת לחיצה במפקח Button .

לאחר מכן יתווסף פריט אחד.

בפריט הימני התחתון, שמטתי סקריפט המצורף מההיררכיה EventSystem . מכיוון שאנחנו צריכים לשים את האובייקט שאליו התסריט מצורף כאן, אם אתה מצרף קובץ Script ללחצן, עליך לכלול לחצן.

אם תלחץ על "אין פונקציה", הסקריפט המצורף יוצג, לכן ButtonClick בחר . בחר את השיטה שיצרת OnClick בו. עכשיו כאשר אתה לוחץ על הכפתור, השיטה OnClick נקראת.

יומן פלט בלחיצת כפתור

אני אוציא את היומן כדי לאשר שזה עובד. אתה יכול לבדוק שזה עובד רק על ידי כתיבת שורה אחת, וזה יהיה מאוד שימושי עבור באגים בעתיד, אז עדיף לזכור את זה.

ButtonClick פתח את קובץ ה- Script והוסף OnClick את הטקסט הבא ל- .

public void OnClick()
{
  // コンソール ログを出力
  Debug.Log("ボタンが押されました!");
}

לאחר שנכנסת ושמרת, הפעל את המשחק ולחץ על הכפתור.

בכל פעם שאתה לוחץ עליו, מופיעה הודעה בכרטיסיית הקונסולה. עכשיו אתם יכולים לראות שזה עובד.

שינוי טקסט בלחיצת לחצן

עכשיו שאתה יכול להזיז את הכפתורים, המטרה של טיפ זה הושגה. כעת, לאחר שמיקמתי את אובייקט הטקסט, ברצוני לשנות את הטקסט בכל פעם שאני לוחץ על הלחצן.

כתוב מחדש את התסריט באופן הבא.

// 省略

public class ButtonClick : MonoBehaviour
{
  /// <summary>カウントアップするテキストオブジェクト。</summary>
  [SerializeField] Text CountText;

  /// <summary>クリックカウント。</summary>
  private int _counter = 0;

  public void OnClick()
  {
    // コンソール ログを出力
    Debug.Log("ボタンが押されました!");

    // カウントを増やす
    _counter++;

    // カウントした数を表示する
    CountText.text = _counter.ToString();
  }
}

התוכן הוא פשוט להגדיל את הספירה ב- 1 בכל פעם שאתה לוחץ ומגדיר את המספר לאובייקט הטקסט.

הפעל את המשחק וודא שהמספר גדל עם כל לחיצה.