728x90
반응형

Editor에서 StreamingAssets 폴더에 있는 test.json을 읽어서 그 내용을 출력하는 코드

using System.IO;
using Unity.Networking

string path = Path.Combine(Application.streamingAssetPath, "test.json");

var request = UnityWebRequest.Get(path)
request.SendWebRequest();
while(!request.isDone)
{

}

Debug.Log(request.downloadHandler.text)

Unity Application AssetPath 종류

Unity에서 사용할 수 있는 AssetPath는 3종류가 있다

플랫폼에 따른 경로는 나중에 작성

1. Application.dataPath

Editor상에서는 [프로젝트 폴더]\Assets

보통 Resources 폴더를 만들어서 Resources.Load()와 함께 사용하곤 한다

2. Application.streamingAssetPath

Editor상에서는 [프로젝트 폴더]\Assets\StreamingAssets

보통 서버에서 다운로드해야하는 파일을 서버를 구현하기 전 빌드에 포함시킬 때 사용한다고 한다

3. Application.persistantDataPath

Editor상에서는 %userprofile%\AppData\LocalLow\[company name]\[product name]

여기서 company name과 product name의 Edit - Project Settings - Player에서 확인 가능하다

보통 이 경로를 사용해서 파일을 저장한다.

Android에서 streamingAssetPath 파일 접근

Edtior나 Windows에서는 streamingAssetPath에 접근하는 방법이 번거롭지 않다.

그냥 보통 파일 접근하듯이 하면 된다

문제는 Android일 때는 그냥 파일 접근하듯이 하면 안된다

Android인 경우 UnityWebRequest를 사용한다.

UnityWebRequest

UnityWebRequest는 예전에 있던 WWW를 대체한다. (관련 자료가 대부분 WWW을 사용했다.)

간단한 사용 방법은 아래와 같다

using System.IO;
using Unity.Networking

...

string path = Path.Combine(Application.streamingAssetPath, "test.json");

var request = UnityWebRequest.Get(path)
request.SendWebRequest();
while(!request.isDone)
{

}

Debug.Log(request.downloadHandler.text)

여기서 test.json파일은 [프로젝트 폴더]\Assets\StreamingAssets에 위치하고 있다.

 

이번에 진행하던 프로젝트에서는 StreamingAssets에서 가져온 파일을 persistantDataPath에 저장하고

이후에는 persistantDataPath에서 Save, Load를 사용했다.