유니티 엔진 (Unity Engine)

유니티..바이블 - 19장 마스터 데이터 퀘스트 (1화)

원생계 2019. 10. 7. 02:54

.

.

19장: 마스터 데이터 퀘스트

Excel Importer, 마스터 데이터의 구축과 활용, 레벨 디자인, ScriptableObject

- Excel Importer 플러그인을 이용한 엑셀 파일의 이용 방법

- 엑셀 파일을 이용하는 마스터 데이터 구축의 예

- 유니티에서 마스터 데이터를 이용하는 구체적인 구현 방법

플러그인 주소

https://github.com/mikito/unity-excel-importer/releases

Unity 2019.1.4f1 버전으로 진행.

프로젝트를 열면 마이그레이션이 완료되고 아래와 같은 에러가 뜸.

Feature `out variable declaration' cannot be used because it is not part of the C# 4.0 language

Edit > Project Settings 의 Other Settings 탭 아래의 Configuration/Scripting Runtime Version* 을 수정

https://stackoverflow.com/questions/56068615/unity-error-feature-out-variable-declaration

유니티 프로젝트에서 자주 이용되는 몇 가지 데이터 핸들링 방법

- 하드코딩

- ScriptableObjct / 유니티 에디터

유니티 에디터 기본 기능으로 데이터 입력은 쉬우나, 대량의 데이터 관리 부적합.

- csv, tsv 파일

Text 데이터를 Parsing 해서 활용. 메타 정보는 저장할 수 없다.

- 엑셀 파일

엑셀로 데이터 다루고, 유니티 데이터에서 ScriptableObject 로 변환. 대량의 데이터 관리 용이.

엑셀 시뮬레이트도 가능. 버전 관리나 공동 편집은 어려울 수 있음.

- 구글 스프레드시트

엑셀의 장점을 모두 갖고, 리비전 관리, 공동 편집도 용이.

단, 웹 애플리케이션이기 때문에, 데이터 익스포트 -> 앱 적용 파이프라인 필요.

- 데이터베이스

SQLite 등의 DB로 관리. 데이터 관리 파이프라인 도구 별도 필요. DB 서버를 두어 공동작업도 용이.

샘플에서는 엑셀 데이터를 다룬다. 공동작업 이점은 포기하고 다른 장점들을 취함.

Excel Importer 활용

1. 엑셀 파일을 유니티에 추가

2. Excel Importer Plugin 이 편집,갱신 감지

3. ScriptableObject 자동 생성

Excel Importer 패키지 추가

아래는 샘플 엑셀파일 내용. 노트북엔 엑셀이 안 깔려있고, 대신 오픈오피스 Calc 로 열었습니다.

Importer의 규칙들

1. 엑셀 시트의 이름은 Entities 여야 함.

2. 첫 행은 필드/컬럼 이름

3. 두 번째 행부터 데이터

 


 

NPOI 라이브러리

NPOI 는 마이크로소프트 오피스의 문서 파일을 C#코드로 조작할 수 있는 라이브러리. 자바 코드인 아파치 POI가 .NET에 이식된 것.

tonyqus/npoi : https://github.com/tonyqus/npoi

NPOI API의 기본 요소 : IWorkbook, ISheet, IRow, ICell 네 가지 구성. (엑셀파일, 시트, 행, 셀 맵핑)

Ex) 첫 시트의 1행, 첫 셀 값을 쉬로 취득

Iworkbook workbook = null;

using(FileStream stream - File.Open(“filename.xls”, FileMode.Open))

{

workbook = new HSSFWorkbook(stream);

}

ISheet sheet workbook.GetSheetAt(0);

IRow row = sheet.GetRow(0);

ICell cell = row.GetCell(0);

Debug.Log(cell.NumericCellValue);

쓰기도 가능.

Ex) 첫 번재 시트, 1행, 첫 셀에 수치 쓰기

Iworkbook workbook = new HSSFWorkbook();

ISheet sheet = workbook.CreateCheet();

IRow row = cheet.CreateRow(0);

ICell cell = row.CreateCell(0);

cell.SetCellValue(1234);

using( var stream - new FileStream(“filename.xls”, FileMode.Create)))

{

workbook.Write(stream);

}

 


 

샘플 데이터 = 데이터, 로직, 에셋 분리하는 구조.

어느 정도 규모가 큰 게임과 같은 구조, MVP, Clean Architecture 와 비슷.

MstMonster : 몬스터 데이터

MstStag : 스테이지 데이터 (배경 에셋과, 클리어 몬스터 수)

MsgStageMonster : MstStage, MstMonster 데이터를 연결하는 중간 테이블 데이터

MasterDataRepository 클래스를 만들어 퍼사드로 사용.

 


 

2화에 이어서

https://wonsorang.tistory.com/553

 

유니티..바이블 - 19장 마스터 데이터 퀘스트 (2화 끝)

. . 1화에서 이어집니다. 1화 : https://wonsorang.tistory.com/544 유니티..바이블 - 19장 마스터 데이터 퀘스트 (1화) . . 19장: 마스터 데이터 퀘스트 Excel Importer, 마스터 데이터의 구축과 활용, 레벨 디..

wonsorang.tistory.com

.

.

728x90
반응형