해당 글은 Csv를 Json으로 변환하는 툴에 대한 가이드입니다.

자세한 코드 내용은 아래의 블로그를 참고해 주세요 

2025.02.25 - [Unity] - [Unity] Csv To Json 변환 툴

 

[Unity] Csv To Json 변환 툴

내일배움캠프-레벨업세션에서 엑셀 파일을 Json으로 변환하는 기능을 봤는데 이번 프로젝트에서 그대로 사용하기에는 맞지않다고 느껴서유니티 내부에서 csv파일을 Json으로 저장하는 기능을 만

youcheachae.tistory.com

 


Csv 변환 방법                                                                                       

  1. wrapper 클래스를 작성합니다
    1. 클래스는 반드시 ICsvParsable 인터페이스를 상속받아 구현해야 합니다.
    2. Parse(string [] values) 메서드 구현
      1. CSV 파일의 각 행은 values 배열로 전달됩니다(string 타입).
      2. 클래스의 필드명에 맞춰서 형변환이 필요합니다
        1. 구체적인 예시는 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 파일

ItemWrapper.csv
0.00MB

 

 

3. 변환 실행

  1. 씬의 Converter 오브젝트에서 CsvToJsonConverter 컴포넌트의 className 배열에 클래스명(=CSV 파일명)을 입력합니다.
  2. Inspector에서 [Csv to Json] 버튼을 클릭합니다.
  3. 변환이 완료되면 콘솔에 성공 메시지가 표시됩니다.
  4. JSON 파일은 Application.persistentDataPath 경로에 저장됩니다.
    1. 구제적인 경로
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

 

+ Recent posts