포스트

UE5 C++ | Crypt Raider, 액터 컴포넌트와 포인터 (유데미)

언리얼 강의 중 Section 4를 정리한 세번째 글입니다.

UE5 C++ | Crypt Raider, 액터 컴포넌트와 포인터 (유데미)

강의 정보 🎓


캐릭터 블루프린트 🦶

바닥 콜리전 적용

  • 기본 메쉬에 콜리전이 없어 플레이어가 추락한다.
  • 해결 방법:
    1. 메쉬 열기 → Show → Simple Collision 체크
    2. Collision → Add Box Simplified Collision 추가
    3. Primitives → Boxes에서 박스 두께 조절 가능

BP_Player 생성

  • BP_FirstPersonCharacter를 부모로 하는 하위 블루프린트 클래스를 생성한다.
  • Mesh 1P → Mesh를 Clear (삭제)

BP_CryptRaiderGameMode 설정

  • 새 GameMode 생성 → Default Pawn ClassBP_Player로 지정한다.
  • 5.3이상부터는 Player Controller ClassBP_FirstPersonPlayerController로 지정해야 움직일 수 있었다.

상속 vs 컴포지션 🧬

구분개념예시
상속 (is-a)하위 클래스가 상위 클래스의 기능을 자동 상속BP_PlayerBP_FirstPersonCharacter이다
컴포지션 (has-a)클래스가 다른 클래스의 인스턴스를 포함Mover 컴포넌트를 포함한 액터

컴포지션은 필요 기능만 선택적으로 포함 가능

상속, 컴포지션,


C++ 액터 컴포넌트 ⚙️

  • Add C++ Component커스텀 Mover 컴포넌트을 생성한다.
  • 생성 후 Mover.h, Mover.cpp가 자동 추가된다.
  • Actor Component는 별도 컴포넌트 섹션에 추가된다.

    Actor Component.png

VS Code에서 include 에러 발생 시

  • 언리얼 에디터 → Tools → Refresh Visual Studio Code Project 실행

포인터 타입 & GetOwner() 📌

액터 위치 확인

  • GetOwner() → 현재 컴포넌트를 포함한 액터를 반환한다.
  • 매 Tick 마다 주소를 로그로 출력 가능하다.
1
2
AActor* Owner = GetOwner();
UE_LOG(LogTemp, Display, TEXT("Mover Owner Address: %u"), Owner);

역참조 & 화살표(→) 연산자 ➡️

  • -> 연산자를 통해 포인터가 가리키는 객체의 멤버에 접근한다.
  • 연산자는 포인터 역참조 (실제 값 추출)

예시

1
2
3
4
5
6
AActor* Owner = GetOwner();
FString Name = Owner->GetActorNameOrLabel();
FVector Location = Owner->GetActorLocation();
FString LocationString = Location.ToCompactString();

UE_LOG(LogTemp, Display, TEXT("Move Owner: %s, Location:(%s) (Address: %u)"), *Name, *LocationString, Owner);

요약 및 느낀점 📝

  • 플레이를 위한 기본 바닥 콜리젼, Game Mode, 플레이어 블루프린트 등을 수정하였다.
  • Mover라는 Actor Component를 생성하여 출력까지 해보는 예제를 다루었다.

    느낀점 💡 컴포지션이라는 개념을 처음 알아보았는데 앞으로 상속만이 아닌 컴포지션을 활용해보도록 해야겠다는 생각이 들었다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.