상황 설명
- 빌드 시 총알 및 몬스터 sprite가 빌드 시 렌더링되지 않음
- 에디터 환경에선 해당 이슈가 없었음
절차
- animator에 있는 sprite의 누락을 의심하여 어드레서블 빌드에 모든 스프라이트를 추가함
- 이후에도 해결되지 않아 scriptableobject로 관리하고있는 몬스터와 총알 정보 또한 어드레서블 빌드에 추가하였다.
- appdata의 해당 프로젝트 Player를 문서를 통해 디버깅 해본 결과 다음과 같았다
- 데이터 로딩은 성공적
- spriteRenderer의 sprite 또한 정상적
- 다만 최초 실행시에 실행되기에 정확한 디버깅은 불가능
- 기존 UI메니저에 테스트 코드를 추가하여 같은 타이밍에 UI Image에서 해당 스프라이트를 대입
- 결과는 첫 프레임에는 Sprite가 적용되었으나 즉시 해제되는것을 시각적으로 확인
- 리소스 메니저에서 해당 sprite를 release 해주는 타이밍에서 이슈 발생을 확인
해결
- handle로 가져온 오브젝트를 obj로 보관하지 않고 string,handle 형태의 딕셔너리로 보관하고 미사용시 해제해주는 방법으로 해결
요약
- 에디터 상에서는 release 해주어도 에셋이 missing 되지 않았으나 이는 에디터의 에셋폴더를 즉시 참조할 수 있어 발생하지 않는 문제였다
- 빌드 시 어드레서블로 지정된 에셋만 빌드한다는 한정성과 handle의 특성을 고려하여 ResourceManager를 작성해야함을 깨달았다.