공부/Unreal Engine

[Unreal5] 언리얼의 C++을 유니티 관점으로 이해해보자

굴러다니다니 2023. 11. 24. 09:54
728x90

Actor 클래스를 상속하는 C++ 클래스를 생성

 

MyActor (기본이름)에 대한 헤더파일, Cpp 파일이 생성된다. (C++ 해봤으면 헤더파일 cpp파일은 알고있겠지) 

헤더파일에 생성자, BeginPlay, Tick이 존재한다.

 

  • 생성자는 클래스 이름과 같은 이름으로 써있으며, 클래스에 객체가 생성될 때 한번 호출, 주로 생성된 액터의 프로퍼티인 변수의 기본값을 설정할 때 이용. 유니티에서는 Start나 Awake랑 비슷한 개념으로 생각됨.
  • BeginPlay(): 액터가 배치된 월드에서 게임이 시작되거나 액터가 월드에 스폰될 때 호출됨. 게임 플레이 로직의 초기화 등에 사용. 유니티에서의 OnEnable 함수와 비슷하다고 생각.
  • Tick(float DeltaTime): 매 프레임마다 한번씩 호출, 유니티에서의 Update와 비슷하나 더 정확히는 FixedUpdate랑 비슷하다고 생각할 수 있음. 매개변수로 설정된 시간 전달받기도 가능. 주로 게임의 로직 처리에 이용. (액터가 있는 한 계속 실행되기 때문) 필요없다면 Update문처럼 지우는게 더 성능에 도움이 됨.

 

로그찍을때는 UE_LOG(LogTemp, Log, TEXT("출력할 문자열")); (Debug.Log("출력할 문자열"); 느낌인 듯)

이를 확인하기 위해 컴파일 해보려면 에디터창 하단에 Cmd 옆에 빈 곳에 LiveCoding.Compile 실행하거나 Ctrl+Alt+F11

OutputLog 를 보면 Log 실행된 걸 볼 수 있다!

 

특이하게 변수 사용하려면 헤더파일에서 생성자 아래에 선언해야됨. 그리고 이를 언리얼 프로퍼티창에서 보고싶다면 UPROPERTY()를 위에 붙여줘야한다. -변수가 여러개 일 경우 변수마다 붙여주기

()내에 지정자를 넣어줘야한다.

EditAnywhere, BlueprintReadWrite, Category="Damage"식으로

EditAnywhere: 어디에서든 편집 가능

VisibleAnywhere: 프로퍼티를 모든 프로퍼티 창에서 보이게는 하고 편집은 불가능

BlueprintReadWrite: 블루프린트에서 읽고 편집도 가능하다

BlueprintReadOnly: 블루프린트에서 읽기만 가능

Transient: 해당 프로퍼티는 휘발성으로 저장 안 됨

Category: 블루프린트나 에디터 창에서 이 변수를 해당 카테고리에 묶어서 보여준다

 

일반C++, 유니티와는 다르게 문자열로 FString을 사용, 문자열 넣는것도 특이함

FString s = TEXT("text") 식으로 넣는다. 

공개범위: public, protected(얘를 상속받은 자식한테만 보임), private

public int a; 처럼 유니티 식의 접근 지정이 아닌 public : 하고 그 문단에 int a; 식으로 적어야한다.

 

728x90