내일배움캠프36일차 TIL 트러블슈팅
코루틴을 사용해서 몇초후 씬을넘어가는 로직을 작성했음
그런데 벗어나면 StopCoroutine을 해야하는데 그냥 다음씬으로 넘어가는 문제 발생
시도1. bool 변수를 하나 만들어서 조건을 달아서 사용해봄
결과 : 조건을 넣어서 작동은 하지만 2초 전에 다시 들어가면 원래 코루틴이 작동해서 다음씬으로 바로 넘어감…
시도2. 안되는 이유를 도저히 모르겠어서 튜터님을 찾아감
원인 : 코루틴을 시작하는데 멈추는 코루틴이 어떤것을 멈춰야 할 지 몰라서 생긴 문제
nowCo라는 코루틴 변수를 만들어서 거기에 StartCoroutine(DelayNextScene)을 넣어줌
콜라이더를 나가면 nowCo를 StopCoroutine해줌 이렇게 하니 해결 완료
비동기 로드를 통해서 씬 로딩을 추가해봤다.
추가하면서 캐릭터를 생성하는데 원래는 코루틴으로 씬이 바뀌면 0.2초 후 캐릭터가 생성되게 했는데 로딩씬을 거치면서 씬이 로드되고 생성해야해서 생성시기가 꼬였다.
시도 1. 이곳 저곳에 넣어볼만한 곳에 넣어봄
결과 : 이곳 저곳에 넣어도 실패….
시도 2. 씬이 로드될때 sceneLoaded이벤트를 활용해볼려고함
결과 : 사용방법을 찾던중 씬이 로드될때마다면 로딩씬이나 아무씬에서나 플레이어가 생성되어서 안됨
시도 3. 결국 튜터님을 찾아감 코드를 보시고 플레이어가 생성되야하는 씬마다 매니저를 두고씬이 넘어갈때 해당매니저에서 awake나 start로 생성해주는 방법이 제일 좋을것 같다고 하심
결과 : 해보니 정상적으로 실행하나 싶었는데 StartPosition의 값이 없다고 뜸
시도 4. startPosition의 값을 가져오는건 awake고 그값을 이용해서 생성하는건 start라 유니티 이벤트 순서에는 문제가 없다고 생각했지만 에러가 계속 나서 튜터님을 찾아감
결과 : 찾아보니 전에 만들어둔 코드를 지우지 않아서 생긴 문제… 바로 죄송합니다 하고 수정 후 실행하니 정상적으로 로딩후 실행함
씬을 비동기로 로딩창을 이용해서 전환했는데 깔끔하고 좀더 게임같아진것 같아 좋은것 같다. 찾아보니 씬을 비동기로 전환하는 것이 전반전인 성능에 좋다고 한다.
계속해서 다양한 시도를 경험해봐야겠다는 생각이 든다.
그리고 에러코드를 좀더 유심히 분석해야겠다. 제대로 확인도 안하고 여쭈어봐서 죄송합니다….