랭킹 구현시 비동기방식으로 하면 왜 코드가 작동하지 않는지 궁금합니다.

  • 프로젝트명 : SoulWeapons
  • 뒤끝SDK 버전 : 4.6.3
  • 에러 코드 : x

주석처리한 코드로 진행하면 [“rows”]를 받아오는 것 까지는 작동하는데 그 이후에 있는 코드는 아무런 오류도 뜨지 않으면서 작동하지 않습니다.

반면에, 위에 활성화된 코드로 진행하면 아무 문제없이 잘 됩니다. 왜 이런현상이 발생하는지 알 수 있을까요? 비동기식으로 하려다 삽질 한참 했네요 ㅠㅠ

안녕하세요 개발지님

우선 코드 상의 문제는 없어보입니다.

다만 유니티의 설계 상 모든 Monobehavior을 거치는 호출(UI, 게임 객체 접근 등)은 메인쓰레드에서만 가능합니다.

때문에 간혹 비동기 문 안에서 유니티의 객체에 접근을 시도한 경우

  • 에러발생
  • 에러도 발생되지 않고 함수 종료

등의 상황이 발생하는 케이스가 있었습니다.

현재 코드상으로는 아무 문제가 없어보이나
정황상 nowRanking.RankItemSetter 함수에서 종료되는 것으로 보이는데요

디버깅 혹은 Debug.Log 함수 호출 등을 통해

해당 비동기문 안에서
rank, nickname, level, value 가 정상적으로 설정이 되는지 (파싱이 잘 되는지)

이후 nowRanking.RankItemSetter 함수가 잘 호출되는지 확인이 필요한 것 같습니다.

추가로 Dispatcher 등을 사용하여
비동기 문 내에서 호출되는 함수가 메인 쓰레드에서 호출되도록 작업하시면 해당 현상이 해결될 것 같습니다.
이 점도 참고 부탁드리겠습니다.

아래 링크는 유니티 에셋스토어에서 제공되는 무료에셋인 Dispatcher의 링크입니다.
https://assetstore.unity.com/packages/tools/dispatcher-41637?locale=ko-KR

좋아요 1