[Unreal] 언리얼 엔진 C++ 프로젝트 시작하기

Doorbals·2022년 12월 29일
0

Unreal

목록 보기
8/10

이전까지는 언리얼엔진의 블루프린트를 이용해 스크립팅 했다면, 이제는 C++ 코드를 사용해 프로젝트를 진행해보고자 한다.

1. C++ 클래스 만들기

C++ 프로젝트를 생성하면 블루프린트 프로젝트와 다르게 C++ Classes라는 폴더가 하나 추가되어 있음을 알 수 있다. C++ 스크립트들을 만들면 이 폴더에 저장된다.

1) C++ Classes 폴더에 있는 상태에서 Add/Import를 누르면 New C++ Classes 메뉴를 선택할 수 있다.

2) 만들고자 하는 클래스의 부모 클래스를 지정해야 하는데, 월드에 배치되려면 Actor 클래스를 상속 받아야 한다. 따라서 특별한 경우가 아니면 Actor를 선택해준다.

3) 새로운 클래스의 이름 및 저장 위치를 지정해준다. 또한 우측에 Public과 Private을 지정해 헤더 파일이 Public 폴더에 위치할 것인지, Private 폴더에 위치할 것인지 선택할 수 있다.
* C++ 클래스를 만들면 헤더 파일(.h)과 소스 파일(.cpp) 두 파일이 생성된다.
a. 헤더 파일 : 스크립트 안에 구현된 변수 및 함수의 이름을 선언해 놓은 파일
b. 소스 파일 : 헤더 파일에 선언된 함수의 내용을 실제로 구현한 파일

2. 변수 및 함수 사용하기

1) 변수 및 함수 선언하기
: 변수 및 함수 선언은 헤더 파일(.h)에서 맨 아래있는 public 부분에 선언한다.

a. int32 : 정수형 변수로, 표준으로 사용하는 int 자료형은 플랫폼마다 차지하는 메모리 크기가 달라지는 경우가 있기 때문에 32비트로 고정된 int32를 사용한다.
b. FString : 문자열 변수로, 위와 마찬가지로 표준인 string 자료형은 크기가 달라질 우려가 있어 언리얼에서 자체적으로 만든 FString을 사용한다.

또한 한글 문자열의 경우 인코딩 방식이 달라 한글이 깨지는 경우가 발생한다. 이를 방지하기 위해 헤더 파일의 인코딩 방식을 변경해서 저장해야 한다. 그리고 한글 문자열을 TEXT()로 묶어주어야 정상적으로 사용 가능하다.

2) 함수 구현 및 사용
: 소스 파일(.cpp)에서는 헤더 파일에서 선언한 함수를 구현하거나, 이미 언리얼 엔진에서 제공하는 라이브러리 함수들을 사용할 수도 있다.

a. UE_LOG(로그 카테고리, 로그 수준, 출력될 텍스트) : 텍스트를 Output Log에 출력한다. 로그 카테고리나 로그 수준을 설정해 보고싶은 텍스트만 선별해서 볼 수 있다.
- 로그 카테고리 설정

- 로그 수준 설정

b. FString 자료형은 포인트 변수로 되어있기 때문에 그 곳에 저장된 '값'에 접근할 때는 *를 붙여줘야 한다. (포인터 변수 자체에는 주소가 들어가 있음.)

c. 함수를 구현할 때, 함수 이름 앞에 헤더 파일의 클래스명을 붙여아 한다.

3. UPROPERTY 시스템

: 코드에 구현된 클래스와 변수, 함수 등을 미리 읽고 조사하는 기능인 '리플렉션' 기능에 등록해서 변수를 읽거나 수정하는 것의 가능 여부를 설정하기 위한 시스템

1) UPROPERTY는 적용하려는 변수의 앞에 붙여야 한다. (세미콜론 없이)

2) UPROPERTY의 몇 가지 종류
a. EditAnywhere : 어디서든 수정 가능
b. EditInstanceOnly : 월드에 배치된 인스턴스에서만 수정 가능
c. EditDefaultsOnly : 블루프린트 설정창에서만 수정 가능
d. VisibleAnywhere : 어디서든 보기 가능
e. VisibleInstanceOnly : 월드에 배치된 인스턴스에서만 보기 가능
f. VisibleDefaultsOnly : 블루프린트 설정창에서만 보기 가능

g.BlueprintReadWrite : 블루프린트 그래프에서 Get, Set 전부 가능

h.BlueprintReadOnly : 블루프린트 그래프에서 Get만 가능

4. UFUNCTION 시스템

: UPROPERTY와 같이, 함수에 대한 리플렉션 기능 사용을 위한 시스템

1) UFUNCTION도 적용하려는 함수의 앞에 붙인다. 붙이면 블루프린트의 그래프에서 사용이 가능해진다.

2) UFUNCTION의 몇 가지 종류
a. BlueprintCallable : C++에서 작성한 함수를 블루프린트에서 사용 가능하게 함. (Setter 성격의 함수)

b. BlueprintPure : 위와 같지만 실행 할 수 없어 오브젝트에 영향을 줄 수 없고, 값을 읽어올 수만 있게 함. (Getter 성격의 함수)

profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글