1 분 소요

이 글은 고박사님의 How to make a Excel Importer in unity를 보고 공부한 내용을 정리한 글입니다.

Excel ImportPermalink

유니티에서 데이터를 직접 관리하는 것은 불편한 점이 많다.
이를 해결하기 위해서 간단하게 Excel을 이용해서 데이터를 받아와 유니티에서 사용할 수 있다.

Excel Importer 설치Permalink

엑셀 임포터를 다운받아 쉽게 데이터를 불러올 수 있다. 그러기 위해서 mikito/unity-excel-importer에서 파일을 다운 받아준다.

받은 파일에서 다음 보이는 Excel Importer 폴더를 유니티 프로젝트로 가져온다. image

Excel 생성Permalink

다음으로는 불러올 엑셀 파일을 만들어준다.
엑셀 파일의 경우 첫 번째 열은 각 행의 소제목이 된다.
여기서는 다음과 같이 Branch, Name, Dialog를 소제목으로 데이터를 저장하였다.

image

이때 시트의 이름도 나중에 불러올 때 중요하므로 필요한 이름으로 저장한다.

image

만든 엑셀 파일 또한 유니티 프로젝트 내로 가져온다.

파싱할 데이터 타입을 클래스로 정의Permalink

엑셀에서 첫 번째 열로 작성한 소제목과 같은 이름을 같는 직렬화 클래스를 생성

[System.Serializable]
public class DialogTypeEntity 
{
    public int Branch;
    public string Name;
    public string Dialog;
}

스크립터블 오브젝트 생성Permalink

엑셀 파일을 누르고 Create ExcelAssetScript로 스크립터블 오브젝트를 생성한다.

image

만들어진 파일에서 주석을 풀고 리스트 제네릭 타입으로 아까 정의해둔 클래스를 넣어준다.
이때 List의 이름은 엑셀 파일을 만들 때 시트 이름과 같아야 한다.

image


[ExcelAsset]
public class EntityDBDialog : ScriptableObject
{
	public List<DialogTypeEntity> Entities; // Replace 'EntityType' to an actual type that is serializable.
}

이제 엑셀 파일을 ReImport하면 스크립터블 오브젝트 객체가 프로젝트 내에 생성된다.

image

image

image

사용Permalink

생성된 스크립터블 오브젝트 객체를 가져와 접근하여 각 요소들을 불러올 수 있다.
여기서는 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}");
            }
        }   
    }
}

image

요약Permalink

  1. Excel importer 설치 후 프로젝트로 가져오기
  2. Excel 파일 만들고 프로젝트로 가져오기
  3. 파싱할 직렬화 클래스 만들기
  4. Create Excel Script 후 만들어진 파일의 List의 제네릭 타입을 만들어둔 클래스로 수정
  5. Excel 파일 ReImport후 만들어진 스크립터블 오브젝트로 유니티에서 데이터 사용

태그:

카테고리:

업데이트:

댓글남기기