-
[Unity] 유니티 StreamingAssets 폴더 활용Unity 2020. 4. 20. 20:58
유니티에서 리소스들은 Assets 폴더에 위치한다. 그런데 이 곳에 위치한 모든 리소스가 최종 완성된 바이너리에 포함되지는 않는다. 최종 바이너리에 포함되는 리소스는 Assets/Resources에 들어있는 것들이다. 이 리소스들의 경우는 Resources.Load()를 사용해 쉽게 로드할 수 있다.
이외에도 스트리밍에 필요한 멀티미디어 파일들은 StreamingAssets 폴더에 넣을 수 있다. 이 폴더에 위치한 리소스들은 타겟 머신에서 유니티가 지정한 위치로 이동되기에 플랫폼에 상관 없이 리소스에 접근하기 좋은 위치로 추천된다. 이 패스는 Application.streamingAssetsPath를 사용해서 액세스 할 수있다.
Assets/StreamingAssets/sample.mp3이 있다고 가정하자. 런타임에 sample.mp3를 재생하기 위해서는 다음과 같이 할 수 있다.
// Assets/StreamingAssets/sample.mp3를 가리키는 패스 설정 #if UNITY_EDITOR // 유니티 에디터일 경우 string urlAudio = "file://" + Application.streamingAssetsPath + "/sample.mp3"; #else // 런타임일 경우 string urlAudio = Application.streamingAssetsPath + "/sample.mp3"; #endif // gameObject에 붙은 AudioSoure 생성 AudioSource audioSrc = gameObject.AddComponent<AudioSource>(); // sample.mp3를 입력으로 설정 audioSrc.clip = urlAudio; // volume 설정 audioSrc.volume = 0.5f; // 재생 audioSrc.Play();
이와같이 StreamingAssets 폴더를 활용하면 플랫폼에 독립적으로 접근할 수 있는 코드를 만들 수 있다. 실제 이 패스의 위치는 타겟 머신에 따라 달라지는데, 다음은 몇몇의 예시이다.
Platform Actual path to StreamingAsssets macOS Application.dataPath + "/Resources/Data/StreamingAssets" iOS Application.dataPath + "/Raw" Android (compressed APK/JAR 내부의 파일을 이용) "jar:file://" + Application.dataPath + "!/assets" Most Others (Windows, Linux players, PS4, Xbox One, Switch)
Application.dataPath + "/StreamingAssets" Fin.
반응형'Unity' 카테고리의 다른 글
[Unity] 유니티 2D UI Canvas 타겟으로 VideoPlayer 사용 (8) 2020.04.29 [Unity] 유니티 2D UI 오브젝트 위치 변경하기 (orthographicSize) (0) 2020.04.10 [Unity] 유니티 UI 오브젝트(Object)의 width/height 변경 (0) 2020.04.09 [Unity] 유니티에서 오디오 파일 재생하기 (4) 2020.04.09