작성
·
294
0
질문1. 코루틴은 코루틴이 대기하는 동안 Start()의 다른 함수나 Update() 함수가 진행되는 건가요?
예를들어 밑에 코드에서 cortDT1이 Start()에서 시작하고, 1초 기다리는 동안 Start()의 그 밑에 있는 함수가 실행되는 건가요? 그러면 Update()는 언제 실행되는 건가요? 실행순서가 궁금합니다!
public class Cort3 : MonoBehaviour
{
Coroutine cortDT1;
Coroutine cortDT2;
// Start is called before the first frame update
void Start()
{
cortDT1 = StartCoroutine(DelayTime(1));
cortDT2 = StartCoroutine(DelayTime(2));
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown("space")){
StopAllCoroutines();
}
}
IEnumerator DelayTime(float time){
while(true){
yield return new WaitForSeconds(time); //메인루틴(update함수)으로 양도권 양보
print(time + "초 만큼 경과");
}
}
}
답변 1
0
안녕하세요.
코루틴은 개념상으로는 스타트나 업데이트 함수와 별개로 진행됩니다. 즉, 코루틴은 스타트나 업데이트 함수의 진행과 무관하게 따로 실행된다고 생각하시면 됩니다.
cortDT1이 Start()에서 시작하고, 1초 기다리는 동안 Start()의 그 밑에 있는 함수가 실행되는 건가요?
맞습니다. 코루틴은 스타트 함수에서 호출하는 그 순간부터 별도의 프로세스로 진행됩니다.
그러면 Update()는 언제 실행되는 건가요? 실행순서가 궁금합니다!
정확히는 코루틴은 업데이트 함수 다음에 실행되고, yield가 있을 경우 지정된 시간만큼 대기하다가 지정된 시간이 경과하면 업데이트 다음에 다시 실행됩니다.