클래스 파일(.h, .cpp)의 이름은 클래스명과 동일해야 한다
네이밍 컨벤션 : PascalCase 사용(단어의 첫 글자 대문자)
// PlayerCharacter.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "PlayerCharacter.generated.h"
UCLASS()
class MYGAME_API APlayerCharacter : public ACharacter
{
GENERATED_BODY()
};
멤버 변수는 PascalCase 사용
로컬 변수는 camelCase 사용
class APlayerCharacter : public ACharacter
{
private:
int32 Health; // 일반 멤버 변수
bool bIsDead; // Boolean 변수
float fSpeed; // Float 변수
static int32 sCounter; // 정적 변수
const float MaxSpeed = 600.0f; // 상수
};
bool IsDead() const;
void SetHealth(int32 NewHealth);
bool CanJump() const;
void TryAttack();
void DoExplosion();
APlayerCharacter::APlayerCharacter()
: Health(100), bIsDead(false), fSpeed(600.0f)
{
PrimaryActorTick.bCanEverTick = true;
}
TObjectPtr<AWeapon> Weapon; // UObject 기반 스마트 포인터
TSharedPtr<FGameData> GameData; // 일반 스마트 포인터
if (bIsDead)
{
return;
}
for (int32 i = 0; i < 10; i++)
{
DoSomething();
} // ✅
if (bIsDead) return; // ❌
UE_LOG(LogTemp, Warning, TEXT("Player Health: %d"), Health);
UCLASS()
class MYGAME_API APlayerCharacter : public ACharacter
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category="Health")
void TakeDamage(int32 DamageAmount);
protected:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Stats")
int32 Health;
};