강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

1 foranie님의 프로필 이미지
1 foranie

작성한 질문수

유니티 Addressable 을 이용한 패치 시스템 구현

loadAssetAsync 등의 함수 사용 중 타임아웃 발생 후 에셋을 마음대로 지우는 증상

작성

·

20

·

수정됨

0

코드를 첨부해야 할지 모르겠는데... 유니티 API를 호출한거 뿐이라 우선 그냥 한번 적어봅니다.

그냥 느낌적 느낌? 으로 이런걸 보신 적 있다면... 알려주세요.

없다면 코드를 정리해서 다시 한번 봐야겠네요

 

 

1. 안드로이드 빌드에서(apk) 127.0.0.1:8080에 에셋을 놓고

(안드로이드 http 로컬 서버. 외부 환경 문제를 최대한 제거하기 위해)

 

2. 에셋을 다운로드완료하고 리소스들을 로드합니다.

정상 동작합니다. 껏다 켜도 문제 없습니다. 어드레서블에서 레벨도 additive하게 로드하고 캐릭터도 배경도 막 로드하고 서버에서 몹 생성 받아 잘 생성하고 삭제하고 다 수행합니다.

 

3. 항상 일어나는건 아니고 잊을만 하면 나오는 일인데

adb 로그만 보면 loadAssetasync()나 InstantiateAsync()를 하는 과정에서 다운로드된 에셋을 읽기? 하는 과정에서 timeout이 일어나고 load에 실패해서? 다운로드한 어드레서블을 지워버리고 새로 127.0.0.1에서 다운로드를 시도 합니다. 역시 실패하구요.

 

4. 다음 실행시 패치씬에서 이전에 지워버린 에셋을 다시 다운로드 시도합니다.

 

5. 익셉션 발생하고 그냥 재실행 시킵니다. 또 다른 에셋을 받기 시도합니다.

 

6. 잘 됩니다. 정상이네요.

 

 

혹시 어드레서블 관련 함수를 사용하는 중 "에셋 로드 시도 실패 후 에셋을 지우고 다시 다운로드 하려는 증상"에 대해서 보신적 있으신가요?

 

문제를 줄이기 위해 수행한 로컬서버가 문제를 일으켰나 싶기도하고

애초에 이미 로컬에 다운로드를 끝내고 넘어가서 어드레서블 파일을 loadAsset을 수행하는데 또 서버를 연결시도 하는 것도 이상하고...

 

동시에 너무 많은 어드레서블 에셋을 로드하지 말라는 말도 있긴 했는데 이런쪽 문제인가 싶기도 하고...

(억지로 로드 시간을 좀 길게 잡아서 상상을 해본다면 정적 씬1XXmb, 플레이어 캐릭터 타입1 2 3 각각 80mb, npc들 100mb, 몬스터 묶음 A B 80 80mb 해서 동시에 6개의 어드레서블 로드가 진행 될 수는 있습니다. )

 

어드레서블 옵션에서 재시도 시간, 재시도 횟수를 늘려놓긴 했습니다만 매번 일어나는건 아니라서 딴 작업하다보면 나오는 식이라...

 

이런걸 보신 적 있으신가요

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 1 foranie님.

말씀하신 증상은 Unity의 Addressable 시스템을 사용할 때 발생할 수 있는 시간 초과 및 재다운로드 문제와 관련이 있습니다. 이 문제는 다양하게 발생할 수 있으며, 특히 로컬 서버 환경이나 네트워크 연결 문제, 과도한 리소스 로드 시도 등에서 주로 나타날 수 있습니다.

아래의 내용을 참고해 문제를 해결해 보세요:

  1. 네트워크 및 서버 설정 문제:
    로컬 서버를 통해 에셋을 서비스하는 경우, 네트워크나 서버의 설정이 중요합니다. Localhost를 사용 중이라도 이 설정이 꼬일 수 있으므로, 다른 로컬 서버 구성이나 네트워크 조건을 실험해 보시길 권장드립니다.

  2. Addressable 설정 조정:
    Addressable 설정에서 리트라이 간격과 횟수를 조정하셨다고 했는데, 추가적으로 AssetProvider의 시간 초과 설정도 검토하시는 게 좋습니다. 과도한 리소스 호출 시 타임아웃이 빈번히 발생할 수 있습니다.

  3. 자원 관리 최적화:
    동시에 많은 리소스를 로드할 경우 메모리 부족이나 자원처리 지연으로 인해 예상치 못한 문제가 발생할 수 있습니다. 리소스의 크기를 조절하거나 비동기 로드의 순서를 최적화해 보세요.

  4. 로그 분석:
    ADB 로그나 Addressable 로깅 옵션을 통해 에러 로그와 함께 어떤 시점에서 문제가 발생하는지 구체적으로 파악하는 것이 필요합니다. 로그는 문제의 근본 원인을 파악하는 중요한 단서가 될 수 있습니다.

  5. 유사 사례 참고:
    비슷한 상황을 다룬 유사한 질문이 있습니다. 해당 링크를 참고하여 문제 해결의 실마리를 찾을 수 있을 것입니다.

혹시 그 외에 자세한 코드와 구성 내용을 공유할 수 있다면, 추가적인 분석이 가능할 수 있습니다. 문제 해결에 어려움이 있으시면 추가적으로 질문 남겨주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

1 foranie님의 프로필 이미지
1 foranie

작성한 질문수

질문하기