coroutine에 관한 바보짓

zox2m·2024년 5월 27일
0

Unity

목록 보기
1/1

코루틴을 호출한 오브젝트가 사라지면 작업은 중단된다.

이건 너무나 당연한 말이다! 외울 필요조차 없다.
그런데 내가 일주일 붙잡고 앓은 이슈가 사실 저 쉬운 한 문장 때문이었다면?..

포탈에 닿으면 다음 씬으로 전환되는 부분을 개발중이다
loadScene() 으로 씬 불러오기 자체는 쉽지만,
씬 불러오기가 완료된 후 수행할 작업이 있을 때가 있다
캐릭터 초기화, 컴포넌트 연결 등등..

따라서 씬을 비동기로 호출해 완전히 불러와 질 때 까지 기다렸다가, 끝난 후 필요한 작업을 해주는 식으로 만든다.
(이때 플레이어는 로딩창을 보게 된다)

내 프로젝트의 경우,
씬 전환 함수는 게임 매니저에 있고 기존 씬의 포탈 오브젝트가 이를 코루틴으로 호출한다.
그런데 뭘 어떻게 해봐도 씬 전환이 90퍼에서 멈춰버렸다.

온갖 삽질을 해보았으나 사실...
씬 전환되면서 코루틴 담당이었던 포탈 오브젝트가 삭제되었으니 코루틴 호출이 중단된 것.

어이가없다
기본기에 충실하자는 생각이 다시 한번 들었다..

1개의 댓글

comment-user-thumbnail
2024년 5월 27일

~ 해결 방법 ~
GameManager에 LoadScene() 함수와 LoadSceneCall() 함수를 두어,
potal 은 그냥 함수로 LoadSceneCall()을 부르게 한다.
그리고 LoadSceneCall()이 LoadScene()을 코루틴으로 호출하면
potal은 사라져도 싱글톤인 GameManager는 유지되므로 코루틴을 끝까지 맡아줄 수 있다

답글 달기