이득우의 언리얼 C++ 게임 개발의 정석을 읽고 개인 공부 목적으로 요약 정리한 글입니다!
매크로 UE_LOG 사용
UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자 ... )
Saved/Logs/ 폴더에 이렇게 로그들이 파일로 저장된다.
언리얼의 출력 로그 윈도우에서도 확인할 수 있다.
이벤트 함수 : 언리얼 엔진에 의해 자동으로 호출되는 중요한 함수
이들은 Actor 클래스에 가상함수로 선언되어 있다.
상속받은 자식 클래스 (내가 생성한 클래스들)가 게임에 필요한 로직을 구현할 때
그보다 먼저 부모 클래스 함수에 있는 중요한 로직을 실행해야 한다!
void AMyCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime); // 부모 클래스의 Tick 먼저 호출
... // 이후 로직 구성
}
VisibleAnywhere
: 에디터에서 볼 수 있지만, 해당 속성의 데이터를 변경할 수 없다.
but 객체 유형의 경우 객체에 속한 속성들을 보여주고 편집할 수 있다!
EditAnywhere
: 에디터에서 볼 수 있고, 속성을 편집할 수 있다.
AllowPrivateAccess (META 키워드)
: 편집함과 동시에 변수 데이터 은닉 가능 -> 캡슐화
(EditAnywhere + Private)
class HUNT_PROTOTYPE_API AMyCharacter : public ACharacter
{
GENERATED_BODY()
public:
UPROPERTY(VisibleAnywhere, Category = Movement)
class UFloatingPawnMovement* Movement;
UPROPERTY(VisibleAnywhere, Category = Camera)
class UCameraComponent* Camera;
UPROPERTY(EditAnywhere, Category = ID)
int32 ID;
private:
UPROPERTY(EditAnywhere, Category = Stat, Meta = (AllowPrivateAccess = true))
float RotateSpeed;
무브먼트 컴포넌트 (Movement Component) : 액터의 움직임에 대한 것을 책임진다.
액터는 무브먼트 컴포넌트가 제공하는 이동 메커니즘에 따라 움직인다.
액터의 현재 위치와 관계없이 액터에 지정된 움직임 기능을 제공
FloatingPawnMovement
중력의 영향을 받지 않는 액터의 움직임 (입력에 따라 자유롭게 움직임)
RotatingMovement
지정한 속도를 액터를 회전
InterpMovement
지정한 위치로 액터를 이동
ProjectileMovement
액터에 중력을 받아 포물선을 그리는 발사체의 움직임 (총알, 미사일 등)
탐색기의 Source 폴더에서 관련 파일을 지우고 다시 VS 프로젝트를 재생성한다.