본문 바로가기
Engine/Unity3D

[Unity3D - C#] CSV파일 읽어오기!

by 황금표정 2013. 8. 1.

본글의 원문은 -> http://dogul2.tistory.com/7 

 

1. 목적

CSV를 읽어 들여서 이부분을 어떻게 게임에 적용시킬것이가에 대한 부분을 생각하거나 제작하자.

 


2. 방법

 

 - CSV파일 만들기
간단한다. 엑셀에서 저장할때 CSV형식으로 저장하면 짜잔 끝~

 

 - CSV 파일 불러오기

CSV파일을 Unity 3d에 적용하기 전에 게임의 플레폼에 대해 생각을 해야한다.

PC에서 구동할것인지 모바일에서 구동할것인지 PC에서 구동할것이면 FileInfo를 써서 만들면 될것이다.

http://soondori.tistory.com/267 그에 관련된 파서와 자료는 여기에 있으니 간단하게 보셔도 된다.

하지만 유니티의 대부분은 모바일에서 구동을 원하는데 그렇게 하기 위해서는 FileInfo를 써서는 안된다. 
그럼 어떤걸 써야하냐 라고 물어보는 사람도 많이 있다.

바로 Resources.Load();를 사용하면된다.

사용 법도 편하고 분석하기도 쉽더라 

 

TextAsset _txtFile = (TextAsset)Resources.Load(FileName) as TextAsset;
string fileFullPath = _txtFile.text;

 

이런식으로 쓰면 fileFullPath에 CSV의 모든 내용이 Text로 들어가있는다.
아차 파일의 경로는 Assets\Resources에 CSV파일을 txt파일로 확장명을 변경을 시켜서 넣어주면된다.

그럼 이렇게 뽐아져 나온 Text파일을 어던식으로 분리를 해야할까????
다행스럽게도 C#또는 자바에는 그러한 기능이 다있다. 저는 C#으로 설명하려고 한다.

 

 string[] stringList = txext.Split('\n');


이런식으로 하면 \n이 들어가 있는 전까지 그 부분을 저장을 한다. 가령

 

1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9


이런 형식의 CSV가 있으면 위의 문구로 배열에 저장이 되는건 1,2,3,4,5,6,7,8,9를 3번 쪼개서

각각의 스트링 배열에 넣는 것이다.

걸 다시한번

 

string[] stringList = txext.Split(',');

 

을 해주면 1,2,3,4,5,6,7,8,9를 각 문자별로 쪼갤수 있다.

이걸 응용하여 파서를 만들면 쉽게 만들수 있을 것이다.

 

댓글1

  • 아베상 2016.01.14 12:23

    좋은 정보 감사드립니다! 근데 확장명을 굳이 txt로 안바꾸고 csv로 사용해도 잘 되네요.
    답글