GameDev/[Unity]

[유니티]Resources폴더 Asset Bundle?

Bit by Bit 2024. 12. 13. 05:06
728x90

 Unity에서 Resources 폴더를 Asset Bundle로 지정하는 것은 가능하지만, 추천되지 않습니다. 이유와 함께 대안적인 방법을 아래에 설명하겠습니다.


1. Resources 폴더의 특성

  • 특별한 역할: Resources 폴더에 포함된 모든 리소스는 Unity에서 앱 빌드 시 자동으로 포함되며, 실행 중에 Resources.Load API를 통해 접근할 수 있습니다.
  • 문제점:
    • Resources 폴더에 있는 리소스는 항상 빌드 파일에 포함됩니다.
      → Asset Bundle로 따로 지정해도 빌드 크기를 줄일 수 없습니다.
    • Resources 폴더의 리소스는 동적 로드 방식이 아니라 앱 설치 시 모두 로드됩니다.

2. Resources 폴더를 Asset Bundle로 지정하면?

  • Unity는 Resources 폴더를 정적인 리소스 관리 방식으로 간주합니다.
  • 폴더 자체를 Asset Bundle로 지정하면 해당 리소스는 두 번 포함될 가능성이 있습니다:
    1. Resources 폴더에 의해 빌드에 포함.
    2. Asset Bundle에 의해 중복 포함.

결론적으로, Resources 폴더 자체를 Asset Bundle로 지정하면 빌드 크기를 줄이거나 메모리 최적화를 기대하기 어렵습니다.


3. 대안: Resources 폴더를 Addressable로 전환

Addressable Asset System을 사용하면 Resources 폴더의 리소스를 Asset Bundle처럼 관리할 수 있습니다.

전환 방법:

  1. Resources 폴더 제거:
    • Resources 폴더의 리소스를 일반 폴더로 이동.
  2. Addressable 설정:
    • Unity 메뉴에서 Window > Asset Management > Addressables > Groups를 엽니다.
    • 이동한 리소스를 Addressable로 지정.
  3. 동적 로드:
    • Addressables.LoadAssetAsync<T>("리소스이름")으로 로드.
    • 이 방식은 Asset Bundle의 이점을 그대로 활용하면서 Resources 폴더의 중복 포함 문제를 해결합니다.

4. Addressable의 장점

  • 리소스 중복 방지: 필요한 리소스만 Asset Bundle로 포함.
  • 동적 로드 최적화: 사용하지 않는 리소스는 메모리에서 해제 가능.
  • 배포 유연성: 리소스를 서버에 저장하고 필요할 때 다운로드 가능.

5. Resources 폴더를 유지해야 하는 경우

  • 기존 코드에서 Resources.Load를 많이 사용하고 있다면 전환 비용이 클 수 있습니다.
  • 이런 경우, 다음 최적화를 고려하세요:
    1. Resources 폴더 최소화: 꼭 필요한 리소스만 포함.
    2. 동적 로드 전략 재검토: 리소스를 미리 로드하거나 특정 순간에만 로드하도록 설계.

 

결론적으로, Resources 폴더 자체를 Asset Bundle로 지정하지 않는 것이 좋습니다.
대신 Addressable Asset System을 활용하거나 Resources 폴더를 최소화하여 효율적으로 관리하는 방법을 추천합니다.

이 글이 유용하셨다면, 공감과 댓글로 응원 부탁드려요! ✨
구독하시면 더 많은 건강 정보를 빠르게 받아보실 수 있습니다. 😊

728x90