์ด๋ ๊ฒ ์ฐ๊ณ ํด๋ฆญํ๋๊น A๋ B๋ ๊ฐ์ด ์ถ๋ ฅ๋๋ค์ ๊ณ์
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
void Awake()
{
StartCoroutine(A());
}
void Update()
{
if(Input.GetMouseButtonDown(0))
{
StartCoroutine(B());
}
}
IEnumerator A()
{
while(true)
{
yield return null;
print("A");
}
}
IEnumerator B()
{
StopCoroutine("A");
while(true)
{
yield return null;
print("B");
}
}
}
Coroutine c = A();
์ด๋ฐ์์ผ๋ก ๋ฐ์์์ ์ฐ๋ฉด ๋ ๊ฑฐ๊ฐ๊ธด ํ๋ฐ, ๊ฒ์ํด๋ฒ๋๊น ๋ฌธ์์ด๋ก ๋ฐ๋ก ์จ๋ ๋๋ค๊ณ ํ๋๋ฐ ์ ์๋ฉ์ถ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค์
์ด๊ฒ ์ ํํ์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ, ๊ฒฝํ์ ์ฝ๋ฃจํด์ ๋ฌธ์์ด๋ก ๋ฐ์์ค๋ฉด new์ํจ๊ฑฐ๋ ๋น์ทํ ๋์์ ํ๋๋ผ๊ตฌ์. ๋ง์ฐฌ๊ฐ์ง๋ก stopcoroutine์ญ์ ๋ฌธ์์ด๋ก ๋ช ๋ นํ๋ฉด ๊ธฐ์กด์ ์กด์ฌํ์ง ์๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ stop์ํจ๋ค(์ฆ ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค)๊ฐ ๋์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋์ํ์ง ์๋๊ฒ ์๋๊น์?
์๋ฐํ๋งํ๋ฉด stopcoroutine(๋ฌธ์์ด)์์ ๋ด๋ถ์์ ๊ฒ์ฆํ๋ ๊ณผ์ ์ ๋ํ ์ค๋ฒํค๋๊ฐ ์์ ์๋ ์๊ฒ ์ต๋๋ค๋งโฆ ๊ฒ์ผ๋ก ๋ณด๊ธฐ์๋ ์ผ๋จ ์๋ฌด๊ฒ๋ ํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋๊น์โฆ!
ํ ๋ฒ ์คํ์ํค๊ณ ๋ง ๊ฑฐ๋ฉด์ ๋ฌธ์์ด์ด๋ ํจ์๋ก ๋ฐ๋ก ์คํํด๋ ๊ด์ฐฎ์ํ ๋ฐ.. ์ฌ๋ฌ ์ฝ๋ฃจํด๋ค์ด ์ฐ๊ฒฐ๋๊ฑฐ๋ ํ ์ฝ๋ฃจํด์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐ๊ฒ ๋๋ ์ผ์ด ์์ ๋๋ ๊ธ์ ์ผ๋ ๊ฒ์ฒ๋ผ ์ฝ๋ฃจํด ๋ณ์๋ก ๋ฐ์๋ ์ํ์์ ๊ด๋ฆฌ๋ฅผ ํ๋๊ฒ ํ์คํ๋ค๊ณ ์๊ฐํจ. ๊ทธ๋ ๋ค๊ณ 1์ฝ๋ฃจํด 1๋ณ์๋ก ์ฐ๋ผ๋ ๋ง์ ์๋๊ณ Coroutine c = StartCoroutine(A()); StopCoroutine(c); c = StartCoroutine(B()); ์ด๋ ๊ฒ ์์ํ ๋ ๋ณ์์ ๋ฐ์๋ ์๋ ์์ผ๋๊น ๋ณ์ ํ๋๋ก ๋๋ ค ์ฐ๊ธฐ๋ ๊ฐ๋ฅ.
์คํํธ์ฝ๋ฃจํด("A") ์คํ์ฝ๋ฃจํด("A") ์ด๋ ๊ฒํ๋ฉด ๋ฉ์ถ๊ธด ํฉ๋๋ค
์ ๋ํฐ ๊ณต์ ๋ฌธ์์์ ์ฝ๋ฃจํด ์ธ์ ์ฐ๊น์ฐ์ง ๋ง๋
"A"๋ก ์์ํ์ผ๋ฉด "A"๋ก ๋ฉ์ถ๊ณ A()๋ก ์์ํ์ผ๋ฉด A()๋ก ๋ฉ์ถ๋ผ๋ ๋ป
๊ฐ์ฌํฉ๋๋ค ํ๋๋ค