상황에 따라 에셋을 씬의 일부로 로드하지 않으면서 프로젝트에서 사용할 수 있게 하는 것이 효과적일 수도 있습니다. 예를 들어 게임의 어떤 씬에서든 나타날 수 있지만 거의 사용되지 않는 캐릭터나 오브젝트가 있을 수 있습니다(예: 비밀 기능, 오류 메시지, 하이스코어 알림 등). 또한 초기 다운로드 시간을 단축하거나 게임 콘텐츠를 교체할 수 있도록 별도의 파일 또는 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 및 어드레서블 패키지를 대신 사용하는 것이 좋습니다.
리소스 시스템의 몇 가지 단점은 다음과 같습니다.
리소스 폴더는 프로젝트 수명 주기 전반에 필요하고, 업데이트가 필요하지 않으며, 플랫폼이나 기기에 따라 달라지지 않는 작은 에셋에 적합합니다. 리소스 에셋은 게임의 최소 부트스트래핑에 포함될 수 있으며, 주요 콘텐츠는 필요할 때 AssetBundle로 다운로드할 수 있습니다. 그러나 StreamingAssets 폴더에 위치한 로컬 AssetBundle으로도 부트스트래핑은 가능합니다.