본문 바로가기
가이드/Unity, C#

[Unity/C#] 에디터, 디바이스에서 Json파일 불러오는 방법

by 루엔_vivid 2023. 5. 18.

에디터에서는 쉽게 원하는 경로에서 Json 파일 등 다양한 파일에 접근할 수 있지만

안드로이드, iOS와 같은 디바이스에서는 여러 제약조건으로 인해 불가능하다.

 

따라서 환경에 맞게 경로 설정을 하여 Json 파일을 불러와야 한다.

 

slotData = LoadJsonFile<SlotData>("Data/SlotData.json");

private T LoadJsonFile<T>(string fileName)
{
    string filePath;
#if UNITY_EDITOR || UNITY_STANDALONE
    filePath = Path.Combine(Application.streamingAssetsPath, fileName);
#elif UNITY_ANDROID
    filePath = Path.Combine("jar:file://" + Application.dataPath + "!/assets/", fileName);
#elif UNITY_IOS
    filePath = Path.Combine(Application.streamingAssetsPath, fileName);
#else
    filePath = null;
#endif

    string jsonData;
#if UNITY_ANDROID && !UNITY_EDITOR
    if (filePath.StartsWith("jar:"))
    {
        UnityWebRequest www = UnityWebRequest.Get(filePath);
        www.SendWebRequest();
        while (!www.isDone) { }
        jsonData = www.downloadHandler.text;
    }
    else
    {
        jsonData = File.ReadAllText(filePath);
    }
#else
    jsonData = File.ReadAllText(filePath);
#endif

    return JsonConvert.DeserializeObject<T>(jsonData);
}

사용 방법은 Assets/StreamingAssets 폴더 하위에 불러오기를 원하는 Json 파일을 넣고

해당 경로를 인자로 사용해서 함수를 실행하면 된다.

 

주위할점은 Resources와 달리 뒤에 파일 확장자 추가가 필요하다.

 

이를 통해 에디터 AOS, iOS 모두 파일 경로 및 접근 권한으로 고생할 필요 없이

Json 파일을 불러올 수 있게 되었다.

반응형

댓글