ฟังก์ชันของเหตุการณ์
ฟังก์ชันเหตุการณ์เป็นฟังก์ชันพิเศษที่ถูกเรียกโดยอัตโนมัติในระหว่างวงจรชีวิตของ GameObject หรือส่วนประกอบในเอนจิน Unity ดังนั้นจึงเรียกว่าฟังก์ชันเหตุการณ์วงจรชีวิตด้วย
ฟังก์ชันเหตุการณ์จะถูกเรียกโดยอัตโนมัติโดยเอนจิน Unity ในช่วงเวลาที่กำหนด
ฟังก์ชันเหตุการณ์เป็นฟังก์ชันพิเศษที่ถูกเรียกโดยอัตโนมัติในระหว่างวงจรชีวิตของ GameObject หรือส่วนประกอบในเอนจิน Unity ดังนั้นจึงเรียกว่าฟังก์ชันเหตุการณ์วงจรชีวิตด้วย

เหตุการณ์การเริ่มต้น
- คุณสามารถใช้เหตุการณ์การเริ่มต้นเพื่อเรียกใช้โค้ดการเริ่มต้นก่อนการอัปเดต
- ฟังก์ชัน Start จะถูกเรียกก่อนการอัปเดตฟิสิกส์ใด ๆ และก่อนเฟรมแรก ในขณะที่ฟังก์ชัน Awake จะถูกเรียกสำหรับแต่ละวัตถุในฉากเมื่อเรียกฉากขึ้น
- ฟังก์ชัน Start และ Awake สำหรับวัตถุต่าง ๆ จะถูกเรียกในลำดับแบบสุ่ม แต่การเรียกทั้งหมดของ Awake จะเสร็จก่อนที่ Start จะถูกเรียก
- นี่หมายความว่าฟังก์ชัน Start สามารถใช้การเริ่มต้นอื่น ๆ ที่ดำเนินการก่อนหน้านี้ในฟังก์ชัน Awake
เหตุการณ์อัปเดตปกติ
- การอัปเดตปกติหมายถึงการอัปเดตทั้งหมดที่เรียกทุกเฟรม。
- พวกเขาเปลี่ยนตำแหน่ง สถานะ และพฤติกรรมของวัตถุก่อนที่แต่ละเฟรมจะถูกเรนเดอร์.
- ZEPETOScript ให้แนวทางในการประมวลผลการคำนวณในฟังก์ชัน Update.
เหตุการณ์ฟิสิกส์
- เหตุการณ์ฟิสิกส์เรียกฟังก์ชันเหตุการณ์ผ่านสคริปต์ที่เพิ่มใน GameObject.
- ฟังก์ชัน OnCollisionEnter, OnCollisionStay และ OnCollisionExit จะถูกเรียกเมื่อมีการสัมผัส เก็บ และทำลาย.
- ฟังก์ชัน OnTriggerEnter, OnTriggerStay และ OnTriggerExit จะถูกเรียกเมื่อคอลลิเดอร์ของวัตถุถูกกำหนดเป็นทริกเกอร์ (เช่น คอลลิเดอร์ที่ไม่ตอบสนองทางกายภาพต่อการชน แต่เพียงแค่ตรวจจับเท่านั้น).
- ฟังก์ชันดังกล่าวอาจถูกเรียกหลายครั้งติดต่อกันหากมีการตรวจจับการสัมผัสหลายครั้งในระหว่างการอัปเดตฟิสิกส์ และดังนั้นพารามิเตอร์จะถูกส่งไปยังฟังก์ชันที่ให้รายละเอียดเกี่ยวกับการชน (ตำแหน่ง ตัวตนของวัตถุ).
เหตุการณ์ GUI
- ZEPETOScript รองรับเหตุการณ์ที่เรนเดอร์การควบคุม GUI และตอบสนองต่อการคลิกจากองค์ประกอบต่างๆ พวกเขาทำงานแตกต่างจากการอัปเดตเฟรมปกติ ดังนั้นตรรกะที่เกี่ยวข้องกับ UI ควรอยู่ในฟังก์ชัน OnGUI.
เหตุการณ์เมาส์
- ใน ZEPETOScript รองรับเหตุการณ์ที่ตอบสนองต่อการโต้ตอบด้วยเมาส์
- อย่างไรก็ตาม เหตุการณ์เมาส์ต้องการ Collider หรือ Collider2D ที่มีอยู่ใน GameObject ที่เกี่ยวข้อง และจะถูกเรียกใช้เมื่อ Collider นั้นถูกคลิกด้วยเมาส์
- OnMouseDown() จะถูกเรียกเมื่อผู้ใช้คลิกปุ่มเมาส์
- OnMouseUp() จะถูกเรียกเมื่อผู้ใช้ปล่อยปุ่มเมาส์
- OnMouseOver() จะถูกเรียกทุกเฟรมในขณะที่เคอร์เซอร์เมาส์อยู่เหนือ Collider หรือ Collider2D ของ GameObject
เหตุการณ์การสิ้นสุด
- เหตุการณ์การสิ้นสุดจะถูกเรียกในวัตถุที่เปิดใช้งานทั้งหมดในฉาก
- ฟังก์ชัน OnDisable จะถูกเรียกเมื่อวัตถุที่กำหนดถูกปิดใช้งานหรือไม่ทำงาน และ OnApplicationQuit จะถูกเรียกใน GameObjects ทั้งหมดก่อนที่แอปพลิเคชันจะปิด
📘 ฟังก์ชันเหตุการณ์ของ Unity https://docs.unity3d.com/kr/current/Manual/EventFunctions.html
ฟังก์ชันเหตุการณ์ทั้งหมดที่รองรับโดย ZEPETOScript จะถูกระบุไว้ในตัวอย่างโค้ดด้านล่าง
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Collider, Collider2D, Collision, Collision2D } from 'UnityEngine';
export default class SampleMonoBehaviourLifeCycle extends ZepetoScriptBehaviour {
Awake() {
console.log('ตื่นขึ้นมา.');
}
OnEnable() {
console.log('เปิดใช้งาน.');
}
Start() {
console.log('เริ่มต้น.');
}
Update() {
console.log('อัปเดต.');
}
FixedUpdate() {
console.log('อัปเดตคงที่.');
}
LateUpdate() {
console.log('อัปเดตช้า.');
}
OnDisable() {
console.log('ปิดการใช้งาน.');
}
OnDestroy() {
console.log('ทำลาย.');
}
OnTriggerEnter(coll: Collider) {
console.log(`เข้าชน ${coll.gameObject.name}.`);
}
OnTriggerExit(coll: Collider) {
console.log(`ออกจากการชน ${coll.gameObject.name}.`);
}
OnTriggerStay(coll: Collider) {
console.log(`อยู่ในชน ${coll.gameObject.name}.`);
}
OnTriggerEnter2D(coll: Collider2D) {
console.log(`เข้าชน2D ${coll.gameObject.name}.`);
}
OnTriggerExit2D(coll: Collider2D) {
console.log(`ออกจากการชน2D ${coll.gameObject.name}.`);
}
OnTriggerStay2D(coll: Collider2D) {
console.log(`อยู่ในชน2D ${coll.gameObject.name}.`);
}
OnCollisionEnter(coll: Collision) {
console.log(`ชน ${coll.gameObject.name}.`);
}
OnCollisionExit(coll: Collision) {
console.log(`ออกจากการชน ${coll.gameObject.name}.`);
}
OnCollisionStay(coll: Collision) {
console.log(`อยู่ในชน ${coll.gameObject.name}.`);
}
OnCollisionEnter2D(coll: Collision2D) {
console.log(`ชน2D ${coll.gameObject.name}.`);
}
OnCollisionExit2D(coll: Collision2D) {
console.log(`ออกจากการชน2D ${coll.gameObject.name}.`);
}
OnCollisionStay2D(coll: Collision2D) {
console.log(`อยู่ในชน2D ${coll.gameObject.name}.`);
}
OnGUI() {
console.log('แสดง GUI.');
}
OnMouseDown() {
console.log('คลิกเมาส์ลง.');
}
OnMouseDrag() {
console.log('ลากเมาส์.');
}
OnMouseUp() {
console.log('ปล่อยเมาส์.');
}
OnMouseEnter() {
console.log('เมาส์เข้ามา.');
}
OnMouseExit() {
console.log('เมาส์ออกไป.');
}
OnMouseOver() {
console.log('เมาส์อยู่เหนือ.');
}
OnMouseUpAsButton() {
console.log('ปล่อยเมาส์เป็นปุ่ม.');
}
OnAnimatorIK(layerIndex: number) {
console.log(`OnAnimatorIK ${layerIndex}.`);
}
OnApplicationFocus() {
console.log('โฟกัสแอปพลิเคชัน.');
}
OnApplicationPause() {
console.log('หยุดชั่วคราวแอปพลิเคชัน.');
}
OnApplicationQuit() {
console.log('ออกจากแอปพลิเคชัน.');
}
}
ตรวจสอบหน้าจอผลลัพธ์ของโค้ดทดสอบด้านล่าง.

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันเหตุการณ์ของ ZEPETOScript ได้โดยการคลิกที่ลิงก์ด้านล่างนี้.
📘 ลำดับการดำเนินการสำหรับฟังก์ชันเหตุการณ์ https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html