목표
유니티에서 엑셀 파일에 데이터를 불러오는 방법을 고민했습니다. 그러다 인터넷에서 유용한 기능을 발견하게 되어서 정리합니다.
https://github.com/mikito/unity-excel-importer
excel importer를 사용하여하는 방법인데요. 안에 git을 다운로드하고 프로젝트 에셋 폴더 안에 넣으면 됩니다. 안에 설명도 잘 되어있어 git만 보셔도 따라 하기 쉽습니다.
준비
일단 저기 git에 들어가서 다운로드합니다.
다운로드하고 압축을 풀면 파일 구성이 이렇게 되어있는데 Assets 폴더 안에 있는 ExcelImporter폴더 파일을 프로젝트 Assets 안에 넣어 줍니다.
이렇게 Assets 안에 ExcelImporter 폴더 전체를 넣어 주면 준비는 끝입니다.
시작
먼저 데이터를 추출할 엑셀 파일이 필요합니다.
따라서 엑셀 파일을 만들어 줍니다.
엑셀의 첫 번째 행은 스크립트에서 변수 명으로 사용되기 때문에 영어로 작성하셔야 합니다. 그리고 밑에 값을 넣어 줍니다.
그다음 엑셀을 선택한 후 Create 메뉴에서 ExcelAssetScript를 실행하고 이 엑셀용 ScriptableObject 스크립트를 만들어 줍니다.
실행하면 이렇게 ScriptableObject 스크립트가 만들어지고 엑셀에 시트 이름과 동일한 변수가 추가가 됩니다.
그다음 List 안에 EntityType 대신에 들어갈 Serializable 객체를 만들어 줍니다.
스크립트 이름은 편한 데로 사용하시면 되고 대신 안에 있는 변수 이름과 같은 경우는 엑셀에 행의 첫 번째 줄에 이름과 동일해야 합니다. 그다음 변수 타입은 안에서 사용한 데이터 타입과 동일해야 합니다.
변수명 | id | name |
0 | 테스트1 | |
1 | 테스트2 | |
2 | 테스트3 | |
3 | 테스트4 | |
4 | 테스트5 | |
변수 타입 | int | string |
그다음에 이렇게 만들어진 객체를 List 안에 EntityType 대신 넣어 줍니다.
그러고 나서 에디터로 돌아와 엑셀 파일을 Reimport 해 주면 스크립트 이름과 동일한 Scriptable object 가 생기게 됩니다.
이렇게 생성이 되고 데이터가 들어가 있는지 확인됩니다.
하지만 데이터를 저 같은 경우 데이터가 확인되지 못하게 잠겨 있습니다. 그래서 코드를 짜서 확인해 보겠습니다.
이렇게 코드를 짜고 실행해서 확인해 본 결과 밑에 처럼 데이터가 잘 들어간 것을 확인했습니다.
고급
1. 생략
값 중간에 # 으로 시작하면 그 행은 생략이 됩니다. 밑에 처럼 넣고 테스트해본 결과 # 으로 시작하는 행은 생략 되고 나머지는 잘 출력이 됩니다. 참고 : 변수 이름이 나오기 전에 생략을 하면 생략이 안되고 값이 안 들어갑니다.
2. 경로 변경
아래와 같이 AssetPath를 지정하여 ScriptableObject 생성 위치를 변경할 수 있습니다.
3. 로그 가져오기
LogOnImport를 true로 설정하면 프로세스가 실행될 때 로그가 출력됩니다.
4. 엑셀 이름 연결
ExcelName을 설정해 클래스 이름과 엑셀 이름이 같지 않아도 엑셀과 연결을 할 수 있습니다.
5. 복합
위에서 나온 속성들을 썩어서 사용할 수 있습니다.