การใช้ปุ่มใน 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 ทุกครั้งที่คุณคลิกและตั้งค่าตัวเลขเป็นวัตถุข้อความ
เรียกใช้เกมและตรวจสอบให้แน่ใจว่าจํานวนเพิ่มขึ้นเมื่อคลิกแต่ละครั้ง