Unity StreamingAssets에 대한 이해
Unity에서 StreamingAssets 폴더는 프로젝트에서 필요한 파일들을 저장하고 직접 접근할 수 있는 특별한 경로입니다. 이 글에서는 StreamingAssets의 사용법과 몇 가지 예시를 통해 어떻게 활용할 수 있는지 설명하겠습니다.
StreamingAssets 폴더란?
- Unity는 프로젝트를 빌드할 때 씬과 에셋을 바이너리 파일로 결합합니다.
- 그러나 StreamingAssets 폴더는 이러한 파일들을 일반 파일 시스템에 저장하여 경로명을 통해 액세스할 수 있도록 합니다.
StreamingAssets 폴더의 접근 방법
StreamingAssets 폴더에 접근하기 위해서는 Application.streamingAssetsPath
속성을 사용해야 합니다. 이 속성은 현재 실행 중인 플랫폼에 따른 경로를 반환합니다.
플랫폼 | StreamingAssets 경로 |
---|---|
Unity 에디터 | Application.dataPath + "/StreamingAssets" |
Windows | Application.dataPath + "/StreamingAssets" |
Linux | Application.dataPath + "/StreamingAssets" |
macOS | Application.dataPath + "/Resources/Data/StreamingAssets" |
iOS | Application.dataPath + "/Raw" |
Android | "jar:file://" + Application.dataPath + "!/assets" |
WebGL | http://localhost:8000/unity_webgl_build/StreamingAssets/ |
StreamingAssets 폴더의 파일 접근
안드로이드와 웹GL 플랫폼에서는 StreamingAssets 경로로 URL이 제공되기 때문에 파일 시스템 API를 사용할 수 없습니다. 대신, UnityWebRequest
클래스를 사용하여 콘텐츠에 접근해야 합니다.
using UnityEngine;
using UnityEngine.Networking;
IEnumerator LoadFromStreamingAssets()
{
string path = Application.streamingAssetsPath + "/yourfile.txt";
UnityWebRequest request = UnityWebRequest.Get(path);
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.LogError(request.error);
}
else
{
Debug.Log(request.downloadHandler.text);
}
}
주의 사항
- StreamingAssets 폴더의 경로는 읽기 전용입니다. 런타임 중에 이 디렉터리에 새 파일을 수정하거나 작성할 수 없습니다.
- StreamingAssets 폴더에 포함된 .dll 및 스크립트 파일은 스크립트 컴파일 중에 포함되지 않으며, 에셋 번들이나 어드레서블을 사용하는 것이 선호됩니다.
활용 예시
- 비디오 재생: iOS에서 비디오 파일을 StreamingAssets에 위치시키고
PlayMovie
함수를 사용하여 재생할 수 있습니다. - 로컬 데이터 로드: 설정 파일, 텍스트 파일 등 필요한 데이터를 로컬에서 로드할 때 사용됩니다.
- 게임 업데이트: 필요한 자산을 StreamingAssets에 업로드하여 게임을 업데이트할 수 있습니다.
결론
Unity의 StreamingAssets 폴더는 다양한 종류의 파일을 저장하고 효율적으로 접근하는 방법을 제공합니다. 위에서 설명한 방법과 예시를 통해 여러분의 프로젝트에 적절히 활용해 보세요!