(ไทย) Unity กับ Coroutine by

31
Jul
0

ความหมาย ??
Coroutine เป็นการทำงานคูขนานกันของโปรแกรมสองโปรแกรม โดยจะทำงานสลับกันไปมาและมีช่วงเวลาการทำงาน ดังนั้นทั้งสองโปรแกรมจึงต้องมีตารางแบ่งเวลาการทำงาน

Couroutine ใน Unity
เมื่อเราเรียก function ใดๆ function นั้นๆ จะทำงานจนจบกระบวนการคำนวนแล้วจึง return ค่ากลับมา ในกระบวนการดังกล่าวจะทำให้เสร็จในการ update frame 1 ครั้งเท่านั้น และไม่สามารถ ส่งตัวแปรข้าม frame ได้ นอกจากจะประกาศตัวแปรไว้นอก function

ตัวอย่าง
void Fade() {
for (float f = 1f; f >= 0; f -= 0.1f) {
Color c = renderer.material.color;
c.a = f;
renderer.material.color = c;
}
}

void Update() {
if (Input.GetKeyDown(“f”)) {
Fade();
}
}
จากตัวอย่าง เราต้องการให้ object ค่อยๆ fade ออก แต่ถ้าเราเขียนแบบนี้ object จะหายไปเลย เพราะว่า function นี้ทำงานจนจบแล้วจึง update frame ต่อไป ดังนั้นเราจะต้องเขียนแบบนี้แทน

IEnumerator Fade() {
for (float f = 1f; f >= 0; f -= 0.1f) {
Color c = renderer.material.color;
c.a = f;
renderer.material.color = c;
yield return null;
}
}

void Update() {
if (Input.GetKeyDown(“f”)) {
StartCoroutine(“Fade”);
}
}

ใน UnityScript function ใดๆ ที่มี yield อยู่จะถือเป็น Coroutine โดยอัตโนมัติ และไม่ต้องเรียก StartCoroutine ด้วย การเรียก function ที่มี yield จะถือว่าเรียก StartCoroutine ไปโดยปริยาย

ตัวอย่าง
function Fade() {
for (var f = 1.0; f >= 0; f -= 0.1) {
var c = renderer.material.color;
c.a = f;
renderer.material.color = c;
yield;
}
}

function Update() {
if (Input.GetKeyDown(“f”)) {
Fade();
}
}

Filed under: Uncategorized

Pixel Art – Mummy by

30
Jul
0

Sorry, this entry is only available in ไทย.

Let’s draw nose by

29
Jul
0

Sorry, this entry is only available in ไทย.

Filed under: Uncategorized

(ไทย) การใช้ Mesh Tool ในการลงสี [Ai] by

29
Jul
0

Sorry, this entry is only available in ไทย.

Filed under: Graphic

CI-view display solution by

28
Jul
0

Sorry, this entry is only available in ไทย.