Version: Unity 6.0 (6000.0)
언어 : 한국어
Use the Resources system to load assets at runtime
Load and unload assets with the Resources system

런타임 시 리소스 로드

상황에 따라 에셋을 씬의 일부로 로드하지 않으면서 프로젝트에서 사용할 수 있게 하는 것이 효과적일 수도 있습니다. 예를 들어 게임의 어떤 씬에서든 나타날 수 있지만 거의 사용되지 않는 캐릭터나 오브젝트가 있을 수 있습니다(예: 비밀 기능, 오류 메시지, 하이스코어 알림 등). 또한 초기 다운로드 시간을 단축하거나 게임 콘텐츠를 교체할 수 있도록 별도의 파일 또는 URL에서 에셋을 로드할 수도 있습니다.

프로젝트의 리소스 폴더 를 사용하여 플레이어 빌드에 콘텐츠를 포함시키면, 빌드하는 씬과는 독립적으로 필요에 따라 로드할 수 있습니다.

리소스 폴더

리소스 폴더에는 빌드에 포함된 씬에서 직접 참조되지 않더라도 빌드된 Unity 플레이어 포함된 에셋의 모음이 들어 있습니다.

리소스 폴에 에셋을 넣으려면 프로젝트 창 에서 새 폴더를 만든 뒤 이름을 Resources로 지정합니다. Assets 폴더 내의 서로 다른 하위 폴더에 여러 개의 리소스 폴더를 배치할 수 있으며, 패키지에도 리소스 폴더가 포함될 수 있습니다. 이어서 프로젝트 창의 다른 폴더에서와 동일한 방식으로 해당 폴더에 에셋을 배치할 수 있습니다. 해당 폴더 중 하나에서 에셋을 로드하려면 Resources.Load()를 호출하십시오.

참고: Resources 폴더에 있는 모든 에셋과 그 종속성은 빌드 출력의 resources.assets_이라는 파일에 저장됩니다. 빌드의 씬이 특정 에셋을 참조하는 경우 해당 에셋은 대신 sharedAssets*.assets_ 파일로 직렬화됩니다.

Resources.Load()로는 Resources 폴더_에 있는 에셋에만 액세스할 수 있습니다. 그러나 종속성에 해당하는 다수의 에셋이 resources.assets_ 파일에 포함될 수 있습니다. 예를 들어 Resources 폴더의 머티리얼이 Resources 폴더 외부의 텍스처를 참조할 수 있을 것입니다. 이 경우 해당 텍스처 또한 resources.assets 파일에 포함되지만 이를 직접 로드할 수는 없습니다.

리소스 언로드

다른 씬을 로드하기 전에 Resources.Load()를 사용하여 로드한 씬 오브젝트를 삭제하려면, 해당 오브젝트에 대해 Object.Destroy()를 호출하십시오. 에셋을 해제하고 메모리를 회수하려면 Resources.UnloadUnusedAssets()를 사용하십시오.

한계 및 대안

리소스 시스템은 특히 신속한 프로토타이핑과 소규모 프로젝트에서 편리하게 사용할 수 있습니다. 하지만 확장성이 좋지 않으므로 일반적으로 사용하기에는 적절하지 않습니다. 따라서 AssetBundle 및 어드레서블 패키지를 대신 사용하는 것이 좋습니다.

리소스 시스템의 몇 가지 단점은 다음과 같습니다.

  • 이 폴더에 많은 콘텐츠를 넣으면 애플리케이션 실행 시간 및 빌드 시간이 길어집니다.
  • 리소스 폴더는 특정 플랫폼에 맞는 커스텀 콘텐츠를 제공하는 데 적합하지 않습니다.
  • 리소스 폴더의 에셋을 변경하려면 플레이어 재빌드 및 재배포가 필요한 반면, AssetBundles은 점진적인 콘텐츠 업데이트에 적합합니다.

리소스 폴더는 프로젝트 수명 주기 전반에 필요하고, 업데이트가 필요하지 않으며, 플랫폼이나 기기에 따라 달라지지 않는 작은 에셋에 적합합니다. 리소스 에셋은 게임의 최소 부트스트래핑에 포함될 수 있으며, 주요 콘텐츠는 필요할 때 AssetBundle로 다운로드할 수 있습니다. 그러나 StreamingAssets 폴더에 위치한 로컬 AssetBundle으로도 부트스트래핑은 가능합니다.

Use the Resources system to load assets at runtime
Load and unload assets with the Resources system