AssetManager를 사용한 비동기 로딩이 패키지 후 제대로 작동하지 않는 현상에 대한 해결책

소개



Asset Manager 자산의 비동기 로딩 기능 정보 1

이 기사를 참고로 AssetManager를 이용한 비동기 로드를 구현했는데, 패키지 후에만 동작하지 않는 현상을 만났으므로 그 대처법에 대해 써 갑니다.

구체적인 증상



AssetManager에서의 비동기 로드에 대해 잘 모르는 분은 「소개」에 기재된 참조처의 기사에서 알기 쉽게 해설되어 있으므로 그쪽을 읽는 것을 추천합니다.


이와 같이 처리를 짜 비동기 로드를 해, 완료한 후에 OpenLevel로 레벨을 이동하도록(듯이) 했습니다.
겉으로보기에는 문제가없는 것처럼 보이며 PIE에서도 Standalone에서도 문제없이 작동하지만 패키지 후에는 정상적으로로드되지 않습니다.

원인에 대해



GetPathName의 반환 값 문자열을 확인한 결과,
[파일 경로]/[레벨 이름].[레벨 이름]
의 형태로 출력되었습니다.


솔루션에 대하여



GetPathName의 반환값의 .이후의 확장자에 해당하는 부분이 문제인가라고 생각해, 이하와 같이 캐릭터 라인을 처리했습니다.

Split 노드는 반환 값을 보면 알 수 있지만 파일 경로를 경로, 파일 이름 및 확장자로 분리하는 노드입니다.
분리한 후 [경로]/[파일명] 형태로 하여 이후 부분을 없애고 있습니다.

이와 같이 .이후의 부분을 없애면 에디터상에서도 패키지 후에도 정상적으로 동작하게 되었습니다.

결론



제 경우에는 비동기 로드 → OpenLevel의 처리를 GameInstance에 구현하고 외부에서 호출하여 사용하는 형태로 구현하고 있어 거기에 문제가 있을까 생각했습니다만, 이 기사를 쓰기에 있어서 레벨 블루프린트에 구현한 것 도 만들어 보았습니다만, 같은 동작이었습니다.
따라서, 아마 GetPathName의 반환값의 .이후가 문제일 것이라고 생각합니다만, 실수나 보충등 있으면, 코멘트등에서 가르쳐 주실 수 있으면 기쁩니다.

좋은 웹페이지 즐겨찾기