Unity에서 Excel import 하기
이 글은 고박사님의 How to make a Excel Importer in unity를 보고 공부한 내용을 정리한 글입니다.
Excel Import
유니티에서 데이터를 직접 관리하는 것은 불편한 점이 많다. 
이를 해결하기 위해서 간단하게 Excel을 이용해서 데이터를 받아와 유니티에서 사용할 수 있다.
Excel Importer 설치
엑셀 임포터를 다운받아 쉽게 데이터를 불러올 수 있다. 그러기 위해서 mikito/unity-excel-importer에서 파일을 다운 받아준다.
받은 파일에서 다음 보이는 Excel Importer 폴더를 유니티 프로젝트로 가져온다.
Excel 생성
다음으로는 불러올 엑셀 파일을 만들어준다. 
엑셀 파일의 경우 첫 번째 열은 각 행의 소제목이 된다. 
여기서는 다음과 같이 Branch, Name, Dialog를 소제목으로 데이터를 저장하였다.
이때 시트의 이름도 나중에 불러올 때 중요하므로 필요한 이름으로 저장한다.
만든 엑셀 파일 또한 유니티 프로젝트 내로 가져온다.
파싱할 데이터 타입을 클래스로 정의
엑셀에서 첫 번째 열로 작성한 소제목과 같은 이름을 같는 직렬화 클래스를 생성
[System.Serializable]
public class DialogTypeEntity 
{
    public int Branch;
    public string Name;
    public string Dialog;
}
스크립터블 오브젝트 생성
엑셀 파일을 누르고 Create ExcelAssetScript로 스크립터블 오브젝트를 생성한다.
만들어진 파일에서 주석을 풀고 리스트 제네릭 타입으로 아까 정의해둔 클래스를 넣어준다. 
이때 List의 이름은 엑셀 파일을 만들 때 시트 이름과 같아야 한다.
[ExcelAsset]
public class EntityDBDialog : ScriptableObject
{
	public List<DialogTypeEntity> Entities; // Replace 'EntityType' to an actual type that is serializable.
}
이제 엑셀 파일을 ReImport하면 스크립터블 오브젝트 객체가 프로젝트 내에 생성된다.
사용
생성된 스크립터블 오브젝트 객체를 가져와 접근하여 각 요소들을 불러올 수 있다. 
여기서는 Branch이 1인 데이터들을 불러와서 출력한다.
public class Test : MonoBehaviour
{
    [SerializeField]
    EntityDBDialog mySheet;
    void Start()
    {
        // 열 개수만큼 반복
        for (int i = 0; i < mySheet.Entities.Count; i++)
        {
            // branch(분기)가 1인 데이터 들만 사용
            if (mySheet.Entities[i].Branch == 1)
            {
                print($"이름 : {mySheet.Entities[i].Name}  하고 싶은 말 : {mySheet.Entities[i].Dialog}");
            }
        }   
    }
}
요약
- Excel importer 설치 후 프로젝트로 가져오기
- Excel 파일 만들고 프로젝트로 가져오기
- 파싱할 직렬화 클래스 만들기
- Create Excel Script 후 만들어진 파일의 List의 제네릭 타입을 만들어둔 클래스로 수정
- Excel 파일 ReImport후 만들어진 스크립터블 오브젝트로 유니티에서 데이터 사용
 
      
댓글남기기