변수를 선언하고, 함수의 원형을 선언함. 구현은 cpp파일에서.
생성자. 객체가 생성될 때 한 번 실행됨. 생성된 객체의 프로퍼티, 기본값을 설정해주는데 사용
액터가 배치된 월드에서 게임이 시작되거나 액터가 월드에 스폰되었을 때 한번 호출됨. 게임 플레이 로직을 초기화하는데 사용
매 틱마다 호출되는 함수. 주로 게임의 로직을 구현. 굳이 필요하지 않다면 Tick을 제거해 효율성을 높일 수 있다.
언리얼 엔진에서의 로그 출력 방법
코드 작성 후엔 에디터에서 컴파일이나, Visual studio 에서 빌드를 해주어야 에디터에 적용이 된다.
클래스의 멤버 변수를 만들어주기 위해서는 .h 헤더 파일에서 선언해줘야 한다.
클래스의 타입, 변수명을 적어주고 UPROPERTY() 매크로를 적어주면 된다.
UPROPERTY()
int32 IntVariable;
UPROPERTY()
float DamageTimeInSeconds;
UPROPERTY()
FString CharacterName;
UPROPERTY()
bool bAttackable;
UPROPERTY()를 붙임으로써, 언리얼 엔진 및 에디터에 이러한 프로퍼티가 있음을 알리고 연결되었을 때 어떻게 동작할지를 지정할 수 있음.하지만 언리얼 에디터 디테일 패널에서는 볼 수가 없다. 이는 매크로 내 지정자를 적어주어야 한다.
UPROPERTY(EditAnywhere, BlueprintReadWrite,Category = "Damage")
int 32 TotalDamage;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage")
float DamagePerSecond;
언리얼 엔진에서 프로퍼티가 초기화될 때 호출되는 함수는
virtual void PostInitProperties() override;
이고,
프로퍼티가 수정될 때 호출되는 함수는
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
클래스가 상속받은 부모 클래스에 있는 원본 프로퍼티나 함수를 가져오는데 사용되는 키워드.
SUPER::PostEditChangeProperty()
와 같은 식으로 원본 함수에서도 실행해주는 것이 좋음.
함수도 언리얼 에디터에서 사용할 수 있게 할 수 있다.
UFUNCTION(BlueprintCallable, Category = "Damage")
void CalculateDamage();
Blueprint에서 사용하는 모든 함수는 Category를 할당해줘야 정상 작동.
UFUNCTION(BlueprintImplementableEvent, Category = "Damage")
void Callable();
블루프린트에서 구현한 기능을 C++에서도 구현할 수 있음.
정말 좋은 정보 감사합니다!