📌
외부 데이터를 불러오는 방법을 간단하게 정리해보려고 한다.
학습 내용
1. .CSV로 불러오기
1. .CSV로 불러오기
가장 쉽고 간단한 방법이다. 검색창에 치면 바로 사용 가능한 툴이 나오지만 원리를 이해하기 위해 개념부터 찬찬히 살펴볼 것이다.
✅ CSV?
CSV(Comma-Separated Values)는 텍스트 기반 포맷으로, 데이터가 쉼표로 구분된 간단한 문자열 형태로 저장된다.
해당 엑셀 파일을 CSV 형태로 저장해 메모장으로 열어보면,
열과 행이 ,와 Enter로 구분되는 것을 알 수 있다.
✅ Resources.Load
이 파일을 어떻게 유니티로 불러올 수 있을까?
먼저 유니티로 파싱했을 때 한글깨짐 이슈를 방지하기 위해 저장한 엑셀 파일을 메모장에 열고 인코딩을 UTF-8로 저장한다.
리소스 폴더에서 원하는 파일을 찾아주는 Resources.Load 함수를 사용할 거라서 반드시 Assets/Resources의 경로를 지켜서 저장해준다.
이제 파일을 가져오는 코드를 작성해야 한다.
public class DataLoad : MonoBehaviour
{
public void Parse()
{
TextAsset textdata = Resources.Load<TextAsset>("textdata");
Debug.Log(textdata.text);
}
private void Start()
{
Parse();
}
}
.CSV 파일 타입인 TextAsset 타입으로 함수를 작성해주고 실행시키면,
이렇게 잘 출력되는 걸 볼 수 있다!
✅ 데이터를 독립적으로 사용하기
하지만 위 예시처럼 텍스트 데이터를 한번에 불러와서 사용하는 경우는 거의 없을 것이다. 어떻게 엑셀의 데이터를 독립적으로 사용할 수 있을까?
엑셀 파일이 .csv 형식으로 변환되었을 때 행은 enter(줄 띄워쓰기)로, 열은 쉼표(,)로 구분되어 저장된 것을 확인할 수 있다. 그래서 Split 메서드를 통해 띄워쓰기와 쉼표로 데이터를 구분해서 출력해볼 것이다.
먼저 줄 단위로 데이터를 저장해보자.
public void Parse()
{
TextAsset textdata = Resources.Load<TextAsset>("textdata");
string[] a = textdata.text.Split(new char[] { '\n' });
}
배열로 저장했을 때 인덱스에는 이렇게 들어갈 것이다.
a[0] = "ID,Name,description"
a[1] = "1,NPC,안녕?"
a[2] = "TIL은 썼니?"
a[3] = "2,플레이어,아니요"
a[4] = "안 썼습니다"
인덱스 번호로 디버그를 찍어보면 실제로도 잘 출력된다.
이제 쉼표로 텍스트를 구분해서 ID, Name, Context의 데이터를 독립적으로 출력해보자.
public void Parse()
{
TextAsset textdata = Resources.Load<TextAsset>("textdata");
string[] a = textdata.text.Split(new char[] { '\n' });
for (int i = 1; i < a.Length; i++) // 줄 단위 텍스트를 끝날 때까지 반복 출력
{
string[] b = a[i].Split(new char[] { ',' }); // 한 줄 텍스트를 다시 쉼표로 구분
for (int j = 0; j < b.Length; j++) // 쉼표로 구분된 텍스트들을 끝날 때까지 반복 출력
{
Debug.Log(b[j]);
}
}
}
위에서 \n을 ,로 바꾼 코드를 써주면 쉽게 로직이 완성된다.
마찬가지로 출력된 모습이다.
이제 이 데이터를 변수로 저장하고 for문에 추가 조건을 걸어서 필요 없는 데이터는 출력되지 않게 바꿀 수 있다. 기본 구조를 이해하기 위한 설명이었고 응용한 버전은 추가로 글을 작성할 예정이다!
다른 사람의 코드를 잘 이해하지 못 하고 쓰면 응용이 어려워서 시간이 걸리더라도 이렇게 스스로 정리하고 분석하는 시간이 꼭 필요한 것 같다. 오늘도 지식 +1!
'[내배캠] 본 캠프 개발 학습 > 매일매일 쓰는 TIL' 카테고리의 다른 글
11월 19일 화요일 본 캠프 개발 일지 (0) | 2024.11.19 |
---|---|
11월 18일 월요일 본 캠프 개발 일지 (2) | 2024.11.18 |
11월 14일 목요일 본 캠프 개발 일지 (0) | 2024.11.14 |
11월 13일 수요일 본 캠프 개발 일지 | 오브젝트의 조작과 스크립트와의 연결 (3) | 2024.11.13 |
11월 12일 화요일 본 캠프 개발 일지 (4) | 2024.11.12 |