in 소프트웨어 개발

유니티 5.6 코루틴 버그 -_-

유니티 개발자 커뮤니티에 쓴글.
아오 이걸로 또 하루를 날렸다.

버그 리포트 겸 공유합니다.
유니티 5.6 에서 코루틴이 첫 yield 문을 만나고 죽는 현상이 있습니다.
“동적으로 UI 관련 컴포넌트가 부착된 게임 오브젝트를 생성하고, 이를 어떤 게임 오브젝트의 자식으로 붙일시” 코루틴이 죽습니다.

저는 캐릭터를 띄우기 위한 이미지를 동적으로 생성하고, 이를 캐릭터를 위한 패널의 자식으로 설정한뒤 페이드를 위한 코루틴을 겁니다. 여기서 페이드를 걸고 첫 yield 문을 만나는 순간 코루틴이 죽습니다.

만들던 게임 버전을 내려야 할듯 ㅠㅠ

괴랄한 점은 UI 관련 컴포넌트가 비활성화 된 상태로 인스턴스화 된 경우, 코루틴이 동작합니다. 단 이 컴포넌트가 비활성화가 되있는 동안만요 -_-… 즉 동적으로 생성할때 UI 컴포넌트를 비활성화 하면 동작은 하는데, 코루틴을 먼저 시작하고 몇초 뒤에 UI 컴포넌트를 활성화 하는 식으로 지연을 걸어봤자, 활성화 되는 순간 코루틴이 멈춥니다.

  • 익명

    하하… 저랑 똑같은 버그를 만나신 분이 여기 계셨군요…

    • san

      혹시 세부 버전이 몇인가요?
      최신버전이 5.6.2 던데 혹시 이 버전인가요??

  • san

    혹시 문제가 발생한 세부버전이 몇인가요?
    최신버전이 5.6.2 던데 혹시 이버전에서 발생했나요?

    • http://ijemin-web.azurewebsites.net I_Jemin

      넹 유니티 5.6에서는 최신 패치에도 전부 발생했고 2017 버전 부터 해당 문제는 고쳐졌더라구요. 근데 2017 버전은 애초에 UI 관련 문제가 머누 심해서 ㅠㅠ

    • san

      아 그런가요..?
      저는 뭔가 테스르를 잘못했는지 재현이 안되서요
      유니티 이슈트래커에 이 이슈가 있던데 거기에 있는 샘플도 다운이 안되더라고요
      재현 경로가 이게 맞을까요?
      1. 처음에 패널이 존재
      2. 동적으로 이미지 컴포넌트가 붙어있는 오브젝트 생성 (프리팹으로부터) 후 패널에 자식으로 붙이기
      3. 신규 오브젝트의 코루틴 실행해서 이미지 컴포넌트 변경

      재현이 안되서 조금씩 바꿔봤는데 안되네요..
      그리고 혹시 안정적인 버전 있으면 추천좀 부탁드립니다. 5.6.2가 불안정하면 이전버전으로 받으려고요

      감사합니다~

    • https://ijemin.com I_Jemin

      5.6.2P4 로 테스트 해봤는데 해결됬네요!