해당 글은 Csv를 Json으로 변환하는 툴에 대한 가이드입니다.
자세한 코드 내용은 아래의 블로그를 참고해 주세요
2025.02.25 - [Unity] - [Unity] Csv To Json 변환 툴
[Unity] Csv To Json 변환 툴
내일배움캠프-레벨업세션에서 엑셀 파일을 Json으로 변환하는 기능을 봤는데 이번 프로젝트에서 그대로 사용하기에는 맞지않다고 느껴서유니티 내부에서 csv파일을 Json으로 저장하는 기능을 만
youcheachae.tistory.com
Csv 변환 방법
- wrapper 클래스를 작성합니다
- 클래스는 반드시 ICsvParsable 인터페이스를 상속받아 구현해야 합니다.
- Parse(string [] values) 메서드 구현
- CSV 파일의 각 행은 values 배열로 전달됩니다(string 타입).
- 클래스의 필드명에 맞춰서 형변환이 필요합니다
- 구체적인 예시는 ItemWrapper의 Parse메서드 참고해 주세요
- 형 변환 방식
// enum 변환 방법
itemType = (변환할 Enum)Enum.Parse(typeof(변환할 Enum), 문자열);
// ex
ItemType itemType = (ItemType)Enum.Parse(typeof(ItemType), values[인덱스]);
// 숫자 변환 방법
//숫자 변환:
int.Parse(values[인덱스];
float.Parse(values[인덱스])
- 각 행은 values 배열로 전달됩니다.
- 구체적인 예시
[System.Serializable]
public class ItemWrapper : ICsvParsable
{
[SerializeField] private int itemNum;
[SerializeField] private ItemType itemType;
[SerializeField] private string itemName;
[SerializeField] private string itemToopTip;
[SerializeField] private float attackSpeed;
[SerializeField] private float attackDamage;
[SerializeField] private float durationTime;
public void Parse(string[] values)
{
// [0] item num
// [1] item type
// [2] name
// [3] tooltip
// [4] attackSpeed
// [5] attackDamage
// [6] durationTime
// [7] PlayerState
itemNum = int.Parse(values[0]);
itemType = (ItemType)Enum.Parse(typeof(ItemType), values[1]);
itemName = values[2];
itemToopTip = values[3];
attackSpeed = float.Parse(values[4]);
attackDamage = float.Parse(values[5]);
durationTime = float.Parse(values[6]);
}
}
2. Resources 폴더에 CSV 파일 추가
- CSV 파일명은 wrapper 클래스명과 정확히 동일해야 합니다.
- 예시 csv 파일
3. 변환 실행
- 씬의 Converter 오브젝트에서 CsvToJsonConverter 컴포넌트의 className 배열에 클래스명(=CSV 파일명)을 입력합니다.
- Inspector에서 [Csv to Json] 버튼을 클릭합니다.
- 변환이 완료되면 콘솔에 성공 메시지가 표시됩니다.
- JSON 파일은 Application.persistentDataPath 경로에 저장됩니다.
- 구제적인 경로
C:\Users\사용자이름\AppData\LocalLow\DefaultCompany\프로젝트이름
저장된 Json 불러오기
- 저장된 클래스를 역직렬화, 리스트로 가져오기
// 저장된 클래스를 역직렬화
List<클래스명> 변수이름 = JsonSerialized.Deserialization<클래스명>("클래스명")
// 사용 예시
List<ItemWrapper> itemWrapperList = JsonSerialized.Deserialization<ItemWrapper>("ItemWrapper");
!!! 주의사항 !!!
- CSV 파일, wrapper 클래스, className 배열에 입력한 이름이 모두 일치해야 합니다.
- CSV 파일은 반드시 Resources 폴더 하위에 위치해야 합니다.
- CSV 파일이 비어있거나 형식이 잘못된 경우 오류가 발생합니다.
깃허브
https://github.com/kimYouChae/UnityCsvToJsonConverter
GitHub - kimYouChae/UnityCsvToJsonConverter
Contribute to kimYouChae/UnityCsvToJsonConverter development by creating an account on GitHub.
github.com
'Unity' 카테고리의 다른 글
[Unity] IK를 이용한 자연스러운 경사 움직임 (0) | 2025.03.06 |
---|---|
[Unity] New Input System으로 1인칭 플레이어 점프/카메라 회전 (0) | 2025.03.05 |
[Unity] New Input System 으로 플레이어 움직이기 (0) | 2025.03.04 |
[Unity]TextMeshPro 폰트 추가 (0) | 2025.03.04 |
[Unity] Audio Clip, Source, Mixer / 오디오 볼륨 조절 슬라이더 (0) | 2025.02.26 |