Version: 5.5
에셋 번들에 스크립트 포함
에셋 번들 자주 묻는 질문(AssetBundles FAQ)

에셋 번들의 디스크 검색 최적화(Optimizing disk seeks with AssetBundles)

Unity는 데이터를 직렬화하여 게임을 로드할 때 리니어로 읽혀지도록 합니다. 이렇게 하면 느리게 돌아가는 하드 디스크 드라이브(HDD)의 검색 횟수를 줄일 수 있습니다. 솔리드 스테이트 컴퓨터 드라이브(SSD)에는 효과가 거의 없습니다.

씬의 데이터(sceneN 필드 및 sharedassetsN.assets 파일)는 오브젝트 타입으로 정렬되어 있습니다. 타입 종속성(에셋, ScriptableObjects 및 MonoBehaviours 등)과 연관성이 있습니다. 씬이 로딩되는 동안 모든 씬 에셋은 함께 순차적으로 로딩되며, 그 후에 씬을 읽는 오브젝트가 리니어로 로드됩니다. 씬 에셋 번들에도 똑같이 적용되며 여기에는 동일한 데이터가 단일 파일로 패키지되어 있습니다.

씬이 아닌 에셋 번들(근본적으로 단일 sharedassets.assets 파일을 나타냄)에서 나온 에셋은 씬 에셋 번들이 직렬화된 방식과 동일하게 직렬화되지만, 로드 패턴은 에셋 번들의 에셋 로딩 API 사용에 따라 정의됩니다. 에셋 번들이 로드된 후에 모든 에셋이 함께 로드되지 않을 수도 있으며, 이는 랜덤한 액세스 패턴으로 읽혀질 수도 있음을 의미합니다.

일반적인 에셋 번들에서 에셋을 로드할 때, Unity는 모든 종속성 리스트를 생성하며 파일에 저장된 순서대로 로드합니다.

주의해야 할 동작

  • 일부 비동기 로딩 함수(오디오 스트리밍 및 비동기 텍스처 로딩 등)는 심지어는 씬에 대한 리니어 읽기 패턴도 중단시킬 수 있습니다.

  • 종속성 에셋 번들의 경우, 다른 번들의 의존성 리소스가 있을 수 있기 때문에, AssetBundle.LoadAllAssets 조차도 리니어 액세스를 보장하지 않습니다. 디스크 검색 수를 최소화하려면 모든 종속성 에셋 번들은 AssetBundle.LoadAllAssets API를 사용하여 로드되어야 합니다.

  • DeterministicAssetBundles은 리니어 읽기를 파괴하지 않으며 타입 정렬 순서를 변경하지 않지만, 특정 타입 범위의 오브젝트의 포지션을 유지합니다.

  • 청크 기반 압축의 에셋 번들(LZ4 압축이라고도 불림)은 리니어 읽기를 파괴하지 않지만 읽기의 단위에 영향을 줄 수 있습니다. 자세한 정보는 Unity 매뉴얼의 에셋 번들 압축 페이지를 참조하십시오.

에셋 번들에 스크립트 포함
에셋 번들 자주 묻는 질문(AssetBundles FAQ)