본문 바로가기

유니티

유니티 - Addressable 메테리얼 로드 오류

 

Addressables 에셋을 어떻게 로드할지 결정하는 방식이 2가지가 있다.

 

1. Use Asset Database (fastest)

에디터에서 가장 빠르게 테스트할 수 있는 기본 설정

  • Addressables 빌드 없이도 동작함
  • 실제 에셋을 Assets/ 폴더에서 직접 로드함
  • 즉, AssetDatabase.LoadAssetAtPath 같은 방식으로 바로 접근
  • 번들로 묶이는 종속성 관계 무시
  • 테스트나 빠른 개발에 유용

장점

  • 에디터에서 가장 빠르게 실행됨
  • 빌드 없이도 변경된 에셋을 바로 확인 가능

단점

  • 실제 빌드된 번들과 다르게 동작할 수 있음
  • Addressables의 번들 포함 여부나 누락 여부를 검증하기 어렵다

2. Use Existing Build (Android)

실제 Addressables 빌드를 한 뒤, 그 번들을 에디터에서 로드하는 방식

  • 이전에 빌드한 Android용 Addressables 번들을 사용
  • Addressables.LoadAssetAsync() 시 실제 번들 파일에서 로딩
  • 실제 게임 실행 시와 거의 동일한 환경
  • 종속성, 누락, 패킹 문제 등을 검증 가능

장점

  • 실제 Android 빌드와 거의 동일한 결과를 에디터에서 확인 가능
  • Addressables의 번들 구조, 종속성 누락 등 실전 이슈를 잡기 좋음

단점

  • Addressables 빌드를 꼭 먼저 해야 함
  • 빌드 시간이 걸림
  • Play Mode가 느릴 수 있음

 

여기서 글쓴이는 Use Existing Build (Android) 사용 하면서 실제 환경에서 동작하는 것처럼 테스트 하기 위해서 에디터 상에서도 해당 모드를 사용하였다. 그러니까 이렇게 로드가 안된 것을 볼 수가 있다.

 

결론만 말하자면 Editor 상에서는 fastest mode를 사용해야 안깨지고, 빌드 시에는 android로 하면 깨지지 않는다고 하더라....

 

그러면 깨지는 이유는 뭘까?

1. 플랫폼 차이

  • Android용으로 Addressables 빌드하면 AssetBundle은 Android 플랫폼 전용으로 빌드됨.
  • 반면, 에디터는 기본적으로 Windows/macOS용 플랫폼에서 실행돼.
  • 즉, Editor에서는 Android 전용 번들을 읽을 수 없어.

2. 셰이더 이슈

  • 셰이더가 Android와 Editor용으로 빌드될 때 포맷이 다름.
  • Sprites/Default 같은 기본 셰이더도 Android 번들로 들어가면 Editor에서는 매핑이 안 되거나 깨짐.

3. 에셋 경로와 종속성

  • Android용 번들로 패킹된 리소스가 Editor의 리소스 구조와 다르기 때문에 종속성이 끊기거나 누락되는 경우가 있어.

결론!!

1. Editor에서는 Use Existing Build (Android) 사용하지 않는다.

→ 테스트 시 깨짐. 플랫폼 맞지 않음.

2. Android에서 직접 앱 실행해서 확인

Use Existing Build (Android)는 실제 Android 디바이스에서 실행할 때만 정확히 동작해.

728x90

'유니티' 카테고리의 다른 글

유니티 - Cinemachine을 이용한 Camera Shake  (2) 2025.04.24
유니티 - Addressable  (0) 2025.04.19
유니티 - CustomEditor 사용법  (0) 2025.04.18
DOTS :: ECS, Job System, Burst Compiler  (0) 2025.02.28
FSM, Behavior Tree - Unity  (0) 2024.07.11