반응형
유니티에서 게임 개발시 텍스트나 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파일을 읽으면 됩니다.
반응형
'개발 라이브러리 & 툴 > 유니티' 카테고리의 다른 글
Unity 최적화: Update 함수 (0) | 2021.12.28 |
---|---|
Unity 안드로이드 개발시 알아두면 좋은 것들 (0) | 2021.12.27 |
Unity 안드로이드 빌드 시 화면 멈춤(Freezing) 현상 해결 (0) | 2021.12.26 |
Unity 여러 개의 카메라를 이용하여 여러 개의 포스트 이펙트 적용하기 (0) | 2021.12.03 |
Unity 2D 카메라 화면 크기 및 좌표 범위 얻기 (0) | 2021.11.24 |
Unity 씬 이동 간에 빈 이동 씬을 이용하여 최대 사용 메모리 줄이기 (0) | 2021.11.23 |
Unity 스크립트 수정 후 스크립트 관련 대화상자 뜨는 시간 줄이기 (0) | 2021.10.29 |
Unity 정적(Static)객체를 전역 변수처럼 활용하기 (0) | 2021.10.22 |