언리얼 엔진 엑셀 데이터 사용 방법

2017. 7. 25. 22:33기술/언리얼 스터디

반응형

 게임에서 중요한 점중 하나가 "수없이 많은 데이터를 어떻게 관리하는가?"인데 기본적으로 클라이언트에서는 파일 읽기/쓰기나 엑셀데이터 사용으로 많은 데이터를 관리합니다. 파일 읽기/쓰기는 툴이 있어야 하고 엑셀데이터는 엑셀 프로그램이 있어야 합니다. 최근에는 능숙한 엑셀 프로그램 사용이 가능한 게임 기획자가 많습니다.


 그리고 대부분은 서버의 DB로 데이터를 관리합니다. 서버 프로그래밍 쪽은 프라우드넷으로 추후 알아보겠습니다.


 언리얼 엔진에서 엑셀 데이터 사용 방법입니다.

 일단 여기에서 Example.xlsx를 다운 받습니다.


블루 프린트로 엑셀 데이터에 접근하면 편리합니다.

다만 C++에서 사용할 수 없습니다. 

블루 프린트에서 엑셀 테이블에 접근할 경우도 있으므로 알아둡시다.


1. ExcelData 폴더를 생성하고 블루프린트 구조체를 만듭니다.


 엑셀에 있는 컬럼명이랑 같아야 합니다. 변수명으로 숫자를 사용할 수 없으니 String으로 만들어 주면 좋겠습니다.


2. Export to CSV 한 다음 만들어진 파일을 언리얼 에디터에 드래그 앤 드롭해서 추가합니다.

 파일을 더블클릭 해 보면 값들을 확인할 수 있습니다.


동영상 참조 : https://www.youtube.com/watch?v=WLv67ddnzN0


엑셀에서 Export to CSV 매크로 보기

코드를 보기 > 매크로에서 확인하면 됩니다.


 언리얼 에디터에서 간단하게 C++ 구조체를 만드는 방법?


 없습니다.


 해외 개발자도 이 문제 때문에 어려움을 겪고 있는거 같습니다. 링크를 참조하세요.

 추후 C++ 구조체 추가와 FTableRowBase를 상속 받아서 구현할 수 있는 기능이 추가 되었으면 하는 바램입니다.


 현재 만드는 방법은 C++ 클래스 만들기를 한 다음 Engine 클래스에서 상속받아서 ExcelDataStructs 이름으로 만듭니다. (모든 엑셀 데이터 구조체 선언 파일) 경로도 잘 맞춰주어야겠네요.


 그 아래 라인에 struct 구조체를 만들면 GENERATED_USTRUCT에 빨간 밑줄이 그어집니다.

 Visual Studio를 끄고 언리얼 에디터에서 컴파일을 한 번 한 후 다시 켭니다.

 헤더 파일 코드 수정을 해도 빨간 밑줄이 그어지는데 그럴 때마다 


Visual Studio를 끄고 언리얼 에디터에서 컴파일 한 번 한 후 다시 켜줍니다.



3. 데이터 접근 방법

 Actor를 상속 받아서 CharacterFactoryActor를 만들어 줍니다.

 클래스를 찾을 수 없으면 언리얼 사이트 문서에서 C++ API를 검색해 보면 어떤 헤더 파일을 포함(#include) 시켜야 하는지 알 수 있습니다.

 

CharacterFactoryActor.h


CharacterFactoryActor.cpp


 참조 :

 코드로 데이터 접근 방법 링크, 링크2

 FObjectFinder 사용법 링크 


 주요 함수는 FObjectFinder인데 경로는 /Game을 루트로 시작합니다. (콘텐츠나 Contents가 아닙니다.)

 이 오브젝트가 불러와 지지 않으면 컴파일 시 출력 로그에 빨간색으로 Error 문자열이 출력됩니다.



 다음으로 m_pStatTable이 NULL이면 함수를 종료 시켜주어야 합니다. 아니면 Null Pointer Exception으로 엔진이 종료됩니다.


 다음으로 중요한 함수가 FindRow인데 첫번째 인자로 FName("Entry1")을 입력해 주면 해당 Row를 찾습니다. 우리가 만들어준 FStatExcelData* pRow 포인터로 받아옵니다.


 데이터 접근은 (*pRow).ATK로 합니다.


 FString::SanitizeFloat는 Float 데이터를 String으로 변환시켜 줍니다.


 출력 로그를 확인해 보면 정상적으로 값에 접근하는 것을 확인할 수 있습니다.



반응형

'기술 > 언리얼 스터디' 카테고리의 다른 글

언리얼 엔진 시작하기 8  (0) 2017.01.24
언리얼 엔진 시작하기 7  (0) 2017.01.04
언리얼 엔진 시작하기 6  (0) 2017.01.02
언리얼 엔진 시작하기 5  (0) 2016.12.30
언리얼 엔진 시작하기 4  (0) 2016.12.12