코루틴을 중간에 중단시켜야해서 이렇게 전역변수로 등록해놓고
시작할때 함수등록하고
이렇게 호출되고
호출하고 메세지보내고
코루틴 안에서 메세지 보내고
정지는 이렇게 해놨는데
실제로 해보니까 첫번째 호출시에 StartCoroutine은 잘 되는데
두번째로 호출할때는는 호출만되고 실제 코루틴이 실행이 안되더라구요.
그래서 제가 추측하기에는 코루틴이 끝나면 IENumerator 변수자리에 null이 들어가는거고
다시 호출할땐 또 한번 등록해줘야하는건가요?
끝났을지 진행중일지 모르는 코루틴을 정지할때는 미리 IEnumerator가 null인지 체크하고 StopCoroutine을 부르고 그렇게하나요?
코루틴 코드!!
Coroutine cor = StartCoroutine(str)
매번 코루틴 Start할때마다 새로 값을 할당해줘야하는게 맞는거네요?
재시작할땐 StartCoroutine(cor)
아하
근데 같은 코드가 반복실행되는거라 재시작 / 첫시작 구분하려면 bool init 이런변수 만들어서 체크해야할거같은데 그냥 첫 코드로 계속 재할당시키면 안되나요?
무슨말임? 이해못했음
왜 저러는지는 모르겠는데 전역변수가 문제라고 하면 같은 스크립트에서 돌리는데 별도로 선언할 이유 있나 StartCoroutine(WaitAndSpawn()) StopCoroutine(WaitAndSpawn()) 난 이렇게 씀
이렇게 하면 안된대요
내공냠냠
감사!
내꺼 스포너는 중복호출 잘 되는데 WaitSpawn() 리턴을 뭘로했음
IENumerator 리턴인데용!!
코드 다시 올렸어요. 지금은 첫댓글 방법대로 매번 새로 값 할당중임
나도 니방식처럼 IEnumerator _coroutine변수선언한다음에 스타트함수에서 한번등록하고 StartCoroutine으로 계속 재호출하는데 아무 문제없음
아마 내부변수가 문제일듯한데
테스트해보니까 new로 재할당 안해도 코루틴끼리는 코루틴 내부변수도 공유하지 않음
미궁이로군요
님은 첫 코루틴이 실행중일떄 새로 재실행하심?? 저는 첫코루틴 완전 끝난다음에 또 호출되는건데 그게 다르지않나싶습니다
StopCoroutine(_coroutine); StartCoroutine(_coroutine); 이래도 정상호출됨
중복실행도 됨
미궁이로군요`~~!!!!
음 그러네 완전히 자체적으로 끝나고나선 재실행이 안되네
오~~~~~
근데 니말처럼 null체크는 안되겠네 널체크해도 있다고 나옴. yield return null 하고 yield break;는 다른거 알지
헐...........................
코루틴이 한방에 끝나버린거 아니야? Yield했음?
코드 다시한번 올렸습니다
두번째로 호출할때는 첫 코루틴이 끝난거 맞아요.