개발 라이브러리 & 툴/유니티

Unity 개발시 편집 중인 텍스트나 csv파일 데이터를 게임에서 읽기

하늘흐늘 2021. 11. 26. 21:48
반응형

유니티에서 게임 개발시 텍스트나 csv 데이터 파일의 로딩이 실패하지 않으려면 편집 중인 데이터 파일을 닫고 로딩해야 합니다. 하지만 게임을 개발하다보면 게임 개발과 텍스트나 csv 파일의 데이터 편집을 동시에 하고 싶을 때가 있습니다.  이럴 때는 아래의 방법을 사용하면 텍스트나 csv 데이터 파일을 편집하면서 게임 로딩이 정상적으로 일어나게 할 수 있습니다.

우선 아래의 간단한 소스를 보겠습니다.

using UnityEngine;
using System.IO;

public class Test
{

    public static void Load(string file)
    {
        string filepath = Application.dataPath + "/Resources/Data/" + file;
        using (var fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
        {
            var sr = new StreamReader(fs);
            var src = sr.ReadToEnd();
            sr.Close();
        }
    }
}

우선, 파일을 System.IO에 있는 FileStream에서 읽기 및 쓰기 공유로 읽기로 엽니다.
다음으로 StreamReader에서 해당 FileStream을 참조합니다.
이후에는 StreamReader에서 파일을 읽으면 됩니다.

근데 이 방법의 아쉬운 점이 모바일 빌드에서 Application.dataPath를 이용한 방법이 정확한 파일 위치를 찾지 못하는 문제가 있었습니다. 파일 경로를 수정하면 될 거 같은데 어려울 것 같으면 #define이나 if문 등을 이용하여 모바일에서는 아래와 같은 일반적인 로딩 방식을 사용하면 됩니다.

file = file.Substring(0, file.IndexOf('.'));
TextAsset data = Resources.Load<TextAsset>("Data/" + file);

 

맨 처음 방식은 실제적으로 csv파일을 수정하면서 게임을 개발하는 유니티 에디터에서 개발시 사용하고 모바일 빌드에서는 두번째 방식을 이용하여 csv파일을 읽으면 됩니다. 

반응형