inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

69

1 foranie

작성한 질문수 1

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개의 어드레서블 로드가 진행 될 수는 있습니다. )

 

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

 

이런걸 보신 적 있으신가요

C# unity

답변 1

0

인프런 AI 인턴

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

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

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

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

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

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

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

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

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

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

Unity6로 작업 중 수업과 다른 내용 및 이슈 공유

2

132

1

카탈로그 다운로드 주소를 런타임에서 변경할 수 있을까요?

0

131

1

"addressables_content_state.bin" 파일 선택창이 안뜹니다. ㅠㅠ

0

286

5

animator안의 animatorcontroller를 불러올수없어요

0

329

2

혹시 문제해결을 파일올리면 봐주실수있나요?

0

225

1

4:53 어드레서블 번들-에셋 메모리 로드 관련 설명에 오류가 있는것같습니다.

0

245

1

Unable to load dependent bundle from....

0

1241

3

캐싱을 할때 캐싱 진행상황을 제대로 표시하고싶어요

0

446

1

어드레서블을 사용해서 받은 에셋이 전부 핑크색으로 나와요

0

941

1

다운로드 후 InGame에서 스프라이트 이미지 반영이 바로 되지않는 현상

0

292

2

윈도우 빌드 파일에 업데이트가 반영되지 않습니다

0

522

1

Addressables.CheckForCatalogUpdates()에 대해서 질문있습니다.

0

765

1

앱을 빌드하지 않고 플레이 모드에서 테스트 할수 있나요?

0

458

1

안녕하세요 빌드시... 용량이 줄지 않습니다.

0

594

1

/ 가 URI 인코딩 문제로 %5C로 내려 받습니다 ㅠㅠ

0

675

1

카탈로그 질문..

0

496

1

CheckForCatalogUpdates() 대한 이해

0

1556

1

멀티 라벨 처리 방식 질문

0

444

1

Exception message 질문

0

648

1

PercentComplete

0

536

1

구매한 아이템을 로드할 때

0

518

1

sprite atlas를 로드하는데

0

957

1

Unloading 5 Unused Serialized files

0

569

1

reference count 관련 질문

0

593

1