여러 프로젝트에서 콘텐츠 로드
여러 Unity 프로젝트에 걸쳐 분할된 대규모 프로젝트와 같이 여러 프로젝트로 작업하는 경우, Addressables.LoadContentCatalogAsync
를 사용하여 여러 프로젝트의 코드와 콘텐츠를 함께 연결할 수 있습니다.
여러 프로젝트 설정
여러 프로젝트 설정을 생성하려면 다음과 같은 상태여야 합니다.
- 각 프로젝트는 동일한 버전의 Unity 에디터를 사용합니다.
- 각 프로젝트는 동일한 버전의 Addressables 패키지를 사용합니다.
프로젝트에는 특정 상황에 필요한 에셋과 코드를 모두 포함할 수 있습니다. 프로젝트 중 하나는 메인 또는 소스 프로젝트여야 합니다. 이 프로젝트는 게임 바이너리를 빌드하고 배포할 프로젝트입니다. 일반적으로 이 소스 프로젝트는 코드가 있으며 콘텐츠가 거의 또는 전혀 없는 상태로 구성됩니다. 기본 프로젝트의 주요 콘텐츠는 최소한 부트스트랩 씬입니다. 에셋 번들을 다운로드 및 캐시하기 전에 성능 목적으로 로컬에 있어야 하는 씬을 포함할 수 있습니다.
보조 프로젝트는 그 반대로, 콘텐츠가 있으며 코드를 거의 또는 전혀 포함하지 않습니다. 이러한 프로젝트에는 모든 원격 어드레서블 그룹 및 Build Remote Catalog가 활성화되어 있어야 합니다. 이러한 프로젝트에 빌드된 로컬 데이터는 소스 프로젝트의 애플리케이션에서 로드할 수 없습니다. 중요하지 않은 씬은 이 프로젝트에 저장하고 요청 시 기본 프로젝트에서 다운로드할 수 있습니다.
여러 프로젝트를 사용한 작업
프로젝트를 설정하고 나면 일반적으로 다음과 같은 워크플로가 진행됩니다.
- 모든 보조 프로젝트에 대해 원격 콘텐츠를 빌드합니다.
- 소스 프로젝트에 대한 어드레서블 콘텐츠를 빌드합니다.
- 소스 프로젝트의 플레이 모드를 시작하거나 소스 프로젝트의 바이너리를 빌드합니다.
- 소스 프로젝트에서
Addressables.LoadContentCatalogAsync
를 사용하여 기타 다양한 프로젝트의 원격 카탈로그를 로드합니다. - 일반적인 방식으로 게임 런타임을 진행합니다. 이제 카탈로그가 로드되었으므로 어드레서블은 이러한 위치 중 어느 곳에서나 에셋을 로드할 수 있습니다.
소스 프로젝트에 최소한의 콘텐츠를 로컬로 빌드하는 것이 좋습니다. 모든 프로젝트는 고유하여 각자의 요구 사항이 있지만, 인터넷 연결 문제나 기타 다양한 문제가 발생할 경우 게임을 실행하는 데 필요한 최소한의 콘텐츠 세트를 갖추어 두는 것이 좋습니다.
셰이더 처리
어드레서블은 빌드되는 각 어드레서블 플레이어 데이터 세트에 대해 Unity 빌트인 셰이더 번들을 빌드합니다. 즉, 보조 프로젝트에서 빌드된 여러 개의 에셋 번들을 로드할 때 여러 개의 빌트인 셰이더 번들이 동시에 로드될 수 있습니다.
상황에 따라서는 AddressableAssetSettings
오브젝트에 Shader Bundle Naming Prefix를 사용해야 할 수도 있습니다. 각 빌트인 셰이더 번들은 다른 프로젝트에서 빌드된 셰이더 번들과 이름을 다르게 지정해야 합니다. 이름을 다르게 지정하지 않으면 The AssetBundle [bundle] can't be loaded because another AssetBundle with the same files is already loaded.
오류가 발생합니다.