본문 바로가기
Unity

[Unity3D] C# CSV 사용법

by Aducssini 2019. 5. 16.

게임을 만들다 보면 

게임의 벨런스나 수치가 겉잡을수 없이 많아진다, 

 

뭐..  HP, Level, 공격력, 방어력, 회피력, 크리티컬율.. 등등. 

 

형식을 만드는 건 Class 하나면 되지만, 수치를 하나식 넣는건. 

기획자의 영역이다. 

그래서 기획자의 영역을 만들어 주는데.  

이것이 흔히 말하는 

 

테이블 Table 이다. 

 

하지만 뭐 말이 멋있지, 일반적으로 그냥 엑셀 파일 이다. 

테이블이란 이런식이다.

하지만 엑셀 파일인 .xlsx 은 프로그래밍 초보인 사람한테는 접근하기 어렵다. (필자 처럼)

플러그인이니, 드래그니. 라이브러리니...  복잡하고 어렵다. (언젠가는 결국 손대겠지만)

그래서 텍스트 파일이나 다름없는 CSV를 다뤄본다. 

 

엑셀로 만들수 있으며, 실제로 .txt 파일과 같다. 

다른 형식으로 저정하는 부분에 Csv가 보인다. 

다른 것도 많아 보이기는 하지만 일단은 왠지 모르게 CSV가 땡겨서 하기로 한다. 

CSV로 저장한다면, 메모장 같은 텍스트 편집기로 본다면 이렇게 보인다. 

이렇게 쉼표(,)로 분리된 txt 파일 같이 된다.

이 구조를 알고 나서라면 데이터로 변환하는게 좀 손쉬워진다.

 

사람이 보면 여러개의 줄로 보이지만 컴퓨터가 보기에는 1줄이다. 

그래서 코드는 이런식이다. 

 

개행문제는 "\n"

각 한행은 "," 로 구분되어있다. 

 

행으로 먼저 나누고, 

각 열을 순서대로 나눈다.

 

그렇게 2차 배열로 넣는게 목표다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CSVUtil
{
//행으로 나눈다.
    public static string[] CSVToLine(string str)
    {
        string[] lineArr = str.Split('\n');
        return lineArr;
    }
 
//열으로 나눈다.
    public static string[] LineToColumn(string line)
    {
        string[] columnArr = line.Split(',');
        return columnArr;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
 

편하게 쓰기위해 static으로 제작해둔다. 

 

그리고 다음이 읽어 오는 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class LoadCSV : MonoBehaviour
{
//읽어올 배열
    string[,] arrData;
 
    void Load()
    {
//유니티에서 읽어옴
        TextAsset textCSV = Resources.Load("경로.csv"as TextAsset;
 
        string[] Lines = CSVUtil.CSVToLine(textCSV.text);
        //크기를 알아오기 위한 코드
string[] tempArr = Lines[0].Split(',');
 
//arrData 초기화
        arrData = new string[Lines.Length, tempArr.Length];
 
        for(int i = 0;i<Lines.Length;i++)
        {
            string[] columns = Lines[i].Split(',');
            for(int j = 0;j< columns.Length;j++)
            {
                arrData[i, j] = columns[j];
            }
        }
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5; text-decoration:none">Colored by Color Scripter
 

 

이렇게 하면 읽어는 올수 있다.

아마도 이후에는 빈공백 처리나, 오류 처리, 

많은 문제에 부딪히지만 일단은 이렇게 하면 데이터로 가져올수 있다. 

 

 

'Unity' 카테고리의 다른 글

[Unity3D] Random.Range 범위  (0) 2019.06.14
[Unity3D] 게임 저장은 Json을 쓰기로...  (0) 2019.05.22
[Unity3D] 싱글톤 (MonoSingleton)  (0) 2019.05.16
[Unity3D] Pixel Perfect 공식  (0) 2019.05.15
[Unity3D] 저장 경로  (0) 2019.05.15