การใช้ปุ่มใน Unity UI

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สภาพแวดล้อมการตรวจสอบ

หน้าต่าง
  • หน้าต่าง 11
บรรณาธิการ Unity
  • ปี 2020.3.25f1

ข้อกําหนดเบื้องต้นสําหรับเคล็ดลับนี้

การตั้งค่าต่อไปนี้ได้รับการทําล่วงหน้าเป็นข้อกําหนดเบื้องต้นสําหรับคําอธิบายของเคล็ดลับเหล่านี้

ทีแรก

ปุ่มสามารถใช้เป็นวัตถุที่ผู้ใช้คลิกด้วยตัวเองหรือสามารถใช้เพื่อเลือกเช่น "ใช่" หรือ "ไม่" ถ้าคุณต้องการให้ละเอียดขึ้นอีกเล็กน้อยคุณสามารถใช้ปุ่มเป็นวัตถุเพื่อเลือกข้อมูลในรายการเช่นเมนู

นอกจากนี้ยังสามารถใช้เพื่อวัตถุประสงค์ในการดีบักและเมื่อคลิกปุ่มเพื่อเปลี่ยนสถานะโดยพลการ

คลิกปุ่มเพื่อเปลี่ยนข้อความ

หากคุณเพียงแค่คลิกปุ่มคุณจะทําการประมวลผลบางอย่าง คราวนี้ทุกครั้งที่คุณคลิกปุ่มจํานวนข้อความจะเพิ่มขึ้น 1

การจัดวางและการกําหนดค่า UI

เพิ่มข้อความและปุ่มจากลําดับชั้นไปยังมุมมอง

คุณสามารถวางไว้ที่ใดก็ได้ตราบใดที่คุณวางไว้ในที่ที่คุณสามารถมองเห็นได้ เนื่องจากเป็นการยากที่จะเห็นในสถานะเริ่มต้นการตั้งค่าเช่น "สีข้อความสีขาว", "เปลี่ยนขนาด", "เพิ่มขนาดตัวอักษร" เป็นต้น เนื้อหาของข้อความจะเปลี่ยนโดยอัตโนมัติในภายหลังเพื่อให้คุณสามารถปล่อยให้เป็น "ข้อความใหม่"

การตั้งค่าอักขระของปุ่มแบ่งออกเป็น "ปุ่ม" และ "ข้อความ" ดังนั้นให้เลือกข้อความและตั้งค่า

การเพิ่มสคริปต์

เลือกโฟลเดอร์ Scenes จากโครงการของคุณคลิกขวาที่พื้นที่ว่างแล้วเลือก 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 # ไม่ใช่หัวข้อหลักของเคล็ดลับนี้ดังนั้นฉันจะไม่อธิบาย กรุณาศึกษาด้วยตัวเอง มีการกล่าวถึงคําอธิบายเฉพาะ Unity เท่านั้น

MonoBehaviour ฟิลด์ที่เขียนในชั้นเรียนที่สืบทอดมาจากจะสามารถตั้งค่าได้ใน Unity Editor CountText ที่นี่เรากําหนดวัตถุข้อความที่เรียกว่า เพื่อให้แสดงได้จะต้อง public เผยแพร่ด้วย SerializeField อย่างไรก็ตามหากคุณเพิ่มแอตทริบิวต์คุณจะสามารถ public แสดงในตัวแก้ไขด้วยการเข้าถึงนอกเหนือจาก นี่เป็นคําอธิบายที่ดีกว่าหากคุณไม่ต้องการเข้าถึงจากชั้นเรียนอื่นให้มากที่สุดนอกเหนือจากเพื่อวัตถุประสงค์ในการตั้งค่าในตัวแก้ไข

OnClick มีวิธีการเพื่ออธิบายสิ่งที่ต้องทําเมื่อคลิกปุ่ม public สิ่งนี้จะต้องกําหนดไว้ใน .

แนบจาก Unity Editor

กลับไปที่ Unity Editor และเลือกจาก ลําดับชั้น EventSystem .

EventSystem สารวัตรจะปรากฏขึ้นดังนั้นวางสคริปต์ C # ที่คุณเพิ่งสร้างขึ้นในพื้นที่ "เพิ่มส่วนประกอบ" ด้านล่าง ตอนนี้สคริปต์พร้อมที่จะทํางานแล้ว

ในความเป็นจริงสคริปต์นี้สามารถแนบกับวัตถุใด ๆ และ Button ควรแนบไปกับวัตถุ ในเคล็ดลับนี้เราจะเพิ่มเพื่อให้เข้าใจง่าย EventSystem Button แน่นอนว่าไม่มีปัญหากับการแนบไปกับ . อย่างไรก็ตามเป็นการดีกว่าที่จะไม่แนบไปกับวัตถุที่ไม่เกี่ยวข้องอย่างสมบูรณ์เนื่องจากจะทําให้เกิดความสับสน

หากคุณดูสคริปต์ที่คุณเพิ่มคุณจะเห็นว่ารายการ "นับข้อความ" ปรากฏขึ้น เมื่อคุณเผยแพร่ฟิลด์ด้วยวิธีนี้คุณจะสามารถตั้งค่าจาก Unity Editor ได้ เราต้องการเข้าถึงวัตถุข้อความเมื่อเราคลิกปุ่มดังนั้นลากจากลําดับชั้น Text และวาง Count Text บน . วิธีนี้จะช่วยให้คุณสามารถเข้าถึงได้จากสคริปต์ของคุณได้ตลอดเวลา

จากนั้นเลือกจากลําดับชั้นButtonและคลิก + ภายใต้ เมื่อคลิก ในตัวตรวจสอบButton

จากนั้นจะเพิ่มหนึ่งรายการ

ในรายการด้านล่างขวาฉันได้วางสคริปต์ที่แนบมาจาก EventSystem ลําดับชั้น เนื่องจากเราจําเป็นต้องใส่วัตถุที่สคริปต์แนบมาที่นี่ หากคุณกําลังแนบสคริปต์เข้ากับปุ่ม คุณจะต้องใส่ปุ่มด้วย

หากคุณคลิก "ไม่มีฟังก์ชัน" สคริปต์ที่แนบมาจะปรากฏขึ้นดังนั้น ButtonClick ให้เลือก เลือกวิธีการที่คุณสร้างขึ้น OnClick ในนั้น ตอนนี้เมื่อคุณคลิกปุ่ม OnClick วิธีการจะถูกเรียก

บันทึกเอาต์พุตด้วยการคลิกปุ่ม

ฉันจะส่งออกบันทึกเพื่อยืนยันว่ามันใช้งานได้ คุณสามารถตรวจสอบว่ามันใช้งานได้เพียงแค่เขียนหนึ่งบรรทัดและจะมีประโยชน์มากสําหรับการดีบักในอนาคตดังนั้นจึงเป็นการดีกว่าที่จะจดจํา

ButtonClick เปิดสคริปต์และเพิ่ม 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 ทุกครั้งที่คุณคลิกและตั้งค่าตัวเลขเป็นวัตถุข้อความ

เรียกใช้เกมและตรวจสอบให้แน่ใจว่าจํานวนเพิ่มขึ้นเมื่อคลิกแต่ละครั้ง