ช่วยด้วย
คำถามที่พบบ่อยเกี่ยวกับการพัฒน...
คุณใช้ Singleton อย่างไร?
6min
ซิงเกิลตัน (Singleton) เป็นรูปแบบการออกแบบที่รับประกันว่ามีเพียงหนึ่งอินสแตนซ์ของคลาสเฉพาะในโปรแกรมเท่านั้น
รูปแบบซิงเกิลตันให้มีอินสแตนซ์เดียวทั่วโลกของคลาส ทำให้สามารถเข้าถึงได้ง่ายจากสคริปต์อื่น ๆ ที่ต้องการ เช่น การจัดการตรรกะ เสียง UI และทรัพยากรที่รวมศูนย์ภายในโลก
ใน ZEPETOScript คุณสามารถนำซิงเกิลตันไปใช้ในลักษณะดังนี้:
👍 เคล็ดลับ
- หากมี GameObject ที่มีสคริปต์ซิงเกิลตันแนบอยู่ในฉากแล้ว คุณสามารถใช้รูปแบบนี้ได้
- หากไม่มี ให้เพิ่มโค้ดเพื่อสร้าง GameObject
- ตัวอย่าง: new GameObject("ObjectName").AddComponent<ClassName>();
มานำซิงเกิลตันไปใช้ในการจัดการ UI ในตัวอย่างกันเถอะ:
1) เพิ่ม UI > ข้อความ และปุ่มลงในฉาก
- ตั้งค่าตรรกะเพื่อเพิ่มคะแนนเมื่อกดปุ่ม "เพิ่มคะแนน"
- ตั้งค่าตรรกะเพื่อลดคะแนนเมื่อกดปุ่ม "ลดคะแนน"
2) สร้างสคริปต์ชื่อ "ScoreManager" ซึ่งจะใช้ Singleton.
- สคริปต์ ScoreManager จะรับผิดชอบในการเพิ่ม/ลดคะแนนและอัปเดตข้อความเมื่อถูกเรียกจากสคริปต์อื่น ๆ.
- คำอธิบายสคริปต์
- private static _instance: นี่คือตัวแปรสถิติเสมือนภายในคลาส ซึ่งตั้งค่าเริ่มต้นเป็น null.
- public static get Instance: คุณสมบัติสถิตินี้ให้วิธีการสำหรับโค้ดภายนอกในการเข้าถึงอินสแตนซ์ที่ไม่ซ้ำกันของคลาสนี้.
- ตรวจสอบ if (this.\_instance == null). หากมันเป็น null ให้ใช้ GameObject.FindObjectOfType<>() เพื่อค้นหาและคืนค่าคอมโพเนนต์ประเภท ClassName และกำหนดให้กับตัวแปรสถิติ.
3) หลังจากเขียนสคริปต์แล้ว ให้กลับไปที่ Inspector และเชื่อมต่อกับคอมโพเนนต์ Text.
4) ถัดไป สร้างสคริปต์ชื่อ "ScoreLogicSample" เพื่อแสดงวิธีการเรียกใช้ Singleton ให้แน่ใจว่า ScoreManager และ ScoreLogicSample อยู่ในไดเรกทอรีเดียวกัน.
- เขียนโค้ดแบบนี้:
- การระบุเส้นทางให้ถูกต้องเมื่อดึงสคริปต์ Singleton เป็นสิ่งสำคัญ
- คุณสามารถปรับส่วนที่เรียก ScoreManager ในสคริปต์ของคุณตามที่ต้องการ
5) กดปุ่ม [▶︎(เล่น)] เพื่อทดสอบ
- คุณควรสังเกตฟังก์ชันใน ScoreManager ที่ถูกเรียกเมื่อคุณคลิกปุ่มใน ScoreLogicSample ทำให้มันทำงานตามที่คาดหวัง
อัปเดต 11 Oct 2024
หน้านี้ช่วยคุณได้หรือไม่?