관리 메뉴

기억을 위한 기록들

[UE4-CPP] 언리얼엔진4(UE4)에서 C++ 구조체 만들고 데이터 테이블 사용하기 본문

UnrealEngine/UE4 - CPP

[UE4-CPP] 언리얼엔진4(UE4)에서 C++ 구조체 만들고 데이터 테이블 사용하기

에드윈H 2021. 4. 2. 23:17

1. visual studio(이하 vs) 프로젝트에서 헤더 파일을 추가해준다. 

 

2. vs를 끄고 프로젝트 경로로 가서 새로생긴 구조체 헤더파일이 프로젝트 폴더 - Intermediate - ProjectFiles 에 생긴다.  헤더파일을 프로젝트 소스 폴더로 옮겨준다.

 

3. 프로젝트.uproject 의 오른쪽 마우스를 누르고 Generate Visual Studio project files를 다시 해준다. 

 

 

 

4. 다시 vs를 열어보면 구조제 헤더파일이 생겨 있고 비어 있는 상태 이다.

   아래와 같은 기본 구성 코드를 작성 해준다. (필수포함)

 

1. CoreMinimal.h 헤더파일. (필수X)
2. 구조체.generated.h 헤더파일 (필수)
3. USTRUCT(BlueprintType)  (필수X BlueprintType을 붙여주면 블루프린트에서 호출가능)
4. F가 붙은 구조체명 (필수)
5. GENERATED_USTRUCT_BODY() (필수)

 

5. 필요한 구조체 변수데이터를 넣어준다.

필요에 따른 UPROPERTY() 내용작성. (빈 UPROPERTY()를 기본적으로 넣는걸 추천한다고 한다.)

  

 

이정도 해주고 컴파일 해보면 블루프린트상 에서 확인 가능하다.

 

 

UPROPERTY()에 따라 damage는 확인불가

 

 

C++ 구조체로 에디터에서의 데이터 테이블 만들기

 

엔진 에디터에서 구조체의 정보로 필요에 따른 데이터테이블을 만들면, 다양한 값을 관리하기 좋은데, 지금까지 코드만으로는 엔진 에디터상에서 데이터테이블을 만들지 못한다.

검색해도 나오지 않는다.

만드는 방법은 간단하다. 코드로 돌아가서  public FTableRowBase 를 상속받고, 

Engine/DataTable.h를 인클루드 해주면 된다. ( USTRUCT()로  해줘도 데이터테이블 사용가능) 

 

 

 

그리고 다시 엔진으로 가서 데이터 테이블를 선택하고

 

검색해보면 

검색이 가능해졌다.

 

하지만, UPROPERTY에 설정된 대로 볼수만 있고 편집은 불가능하다.

다시 수정해주고 확인해보면,

 

편집이 가능해졌다.

 

블루프린트에서 구조체 기본 값 설정하기.

 

블루프린트 노드로 불러올때 해당 구조체 만들기를 하게되면,

 

변수의 기본값인 0으로 되어 있는데, 구조체 생성자 초기화 리스트에 원하는 값을 넣어주면,

 

똑같이 구조체만들기를 해주면 설정해준 기본값이 적용되는것을 알 수 있다.

 

 

그리고 데이터테이블에서도 기본값으로 설정된다.