Unity - โครูทีน
Coroutines เป็นเครื่องมือที่มีประโยชน์ที่สุดเมื่อสร้างเกมใน Unity ให้เราพิจารณาบรรทัดของโค้ดที่แสดงด้านล่างเพื่อทำความเข้าใจว่าโครูทีนคืออะไร
IEnumerator MyCoroutineMethod() {
// Your code here…
yield return null;
}
โดยทั่วไปถ้าคุณเรียกใช้ฟังก์ชันใน Unity (หรือ C # จริงๆ) ฟังก์ชันจะทำงานตั้งแต่ต้นจนจบ นี่คือสิ่งที่คุณจะพิจารณาพฤติกรรม "ปกติ" เท่าที่โค้ดของคุณเกี่ยวข้อง อย่างไรก็ตามบางครั้งเราต้องการทำให้ฟังก์ชันช้าลงโดยเจตนาหรือทำให้รอนานกว่าช่วงเวลาเสี้ยววินาทีที่มันทำงาน โครูทีนสามารถทำสิ่งนั้นได้: โครูทีนเป็นฟังก์ชันที่สามารถทำได้waiting และ timing กระบวนการของมันเช่นเดียวกับการหยุดชั่วคราวทั้งหมด
ให้เราพิจารณาตัวอย่างเพื่อทำความเข้าใจว่าโครูทีนทำงานอย่างไร สมมติว่าเราต้องการสร้างสี่เหลี่ยมที่เปลี่ยนสีระหว่างสีแดงและสีน้ำเงินในช่วงเวลา 1 วินาที
เริ่มต้นด้วยการสร้างสไปรท์ จากนั้นสร้างสคริปต์ใหม่และตั้งชื่อColorChanger. ในสคริปต์นี้เราได้รับการอ้างอิงถึงไฟล์Sprite Rendererของเทพดา อย่างไรก็ตามเราจะใช้วิธีอื่นในการรับส่วนประกอบ แทนที่จะลากและวางส่วนประกอบลงในช่องอย่างที่เราเคยทำมาเราจะขอให้รหัสตรวจหาส่วนประกอบนั้นเอง
สิ่งนี้ทำได้ผ่านไฟล์ GetComponentซึ่งจะส่งคืนส่วนประกอบที่ตรงกันแรกที่ตรวจพบ เนื่องจากเราใช้ Sprite Renderer เพียงตัวเดียวต่อออบเจ็กต์เราจึงสามารถใช้วิธีนี้เพื่อตรวจจับและรับการอ้างอิงไปยัง renderer ของเราโดยอัตโนมัติทุกครั้ง
โปรดจำไว้ว่าตัวแสดงผลมีหน้าที่ทำให้สไปรท์มองเห็นได้จริงบนหน้าจอ ตัวแสดงผลมีไฟล์colorคุณสมบัติที่มีผลต่อสีส่วนกลางของสไปรต์ นี่คือค่าที่จะแก้ไข การทำไฟล์Color ค่าสาธารณะจะให้เราเลือกผ่านตัวแก้ไขในโปรแกรมการเลือกสีเริ่มต้นของระบบปฏิบัติการของคุณ
private SpriteRenderer sr;
public Color color1;
public Color color2;
void Start () {
sr = GetComponent<SpriteRenderer>();
StartCoroutine(ChangeColor());
}
IEnumerator ChangeColor() {
while (true) {
if (sr.color == color1)
sr.color = color2;
else
sr.color = color1;
yield return new WaitForSeconds(3);
}
}
ตอนนี้เราจะดักฟังก์ชั่นโครูทีนของเราในขณะที่ลูป
ในการสร้างโครูทีนใน C # เราเพียงแค่สร้างเมธอดที่ส่งคืน IEnumerator. นอกจากนี้ยังต้องการไฟล์yield returnคำให้การ. คำสั่งผลตอบแทนผลตอบแทนเป็นแบบพิเศษ เป็นสิ่งที่บอกให้ Unity หยุดสคริปต์ชั่วคราวและดำเนินการต่อในเฟรมถัดไป
มีหลายวิธีที่สามารถใช้เพื่อให้ได้ผลตอบแทน หนึ่งในนั้นคือการสร้างอินสแตนซ์ของไฟล์WaitForSecondsชั้นเรียน สิ่งนี้ทำให้โครูทีนรอสักครู่ในโลกแห่งความเป็นจริงก่อนดำเนินการต่อ
ให้เรารวบรวมรหัสของเราและกลับไปที่ Unity เราจะเลือกสีที่สลับกันแล้วกดเล่น ตอนนี้วัตถุของเราควรสลับไปมาระหว่างสองสีในช่วงเวลา 3 วินาที คุณสามารถกำหนดช่วงเวลาให้เป็นตัวแปรสาธารณะและปรับความถี่ของการเปลี่ยนสีได้เช่นกัน
Coroutines ใช้กันอย่างแพร่หลายสำหรับ timedวิธีการเช่นเดียวกับที่เราเพิ่งทำ ความหลากหลายของWaitForXวิธีการมีการใช้งานของตนเอง นอกจากนี้ยังใช้โครูทีนเพื่อเรียกใช้กระบวนการ "ด้านข้าง" ที่ทำงานด้วยตัวเองในขณะที่เกมดำเนินไปพร้อม ๆ กัน สิ่งนี้มีประโยชน์เช่นในการโหลดชิ้นส่วนนอกหน้าจอในระดับใหญ่ในขณะที่ผู้เล่นเริ่มต้นที่จุดหนึ่ง