UE5 C++ | Crypt Raider, 액터 컴포넌트와 포인터 (유데미)
언리얼 강의 중 Section 4를 정리한 세번째 글입니다.
UE5 C++ | Crypt Raider, 액터 컴포넌트와 포인터 (유데미)
강의 정보 🎓
- 강의명: Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games
- 플랫폼: 유데미
- 현재 섹션: Section 4 - Crypt Raider
- 주요 내용: “Mover” Acotr Component를 만들고 출력까지 해보는 예제를 다루었다.
캐릭터 블루프린트 🦶
바닥 콜리전 적용
- 기본 메쉬에 콜리전이 없어 플레이어가 추락한다.
- 해결 방법:
- 메쉬 열기 →
Show → Simple Collision
체크 Collision → Add Box Simplified Collision
추가Primitives → Boxes
에서 박스 두께 조절 가능
- 메쉬 열기 →
BP_Player 생성
BP_FirstPersonCharacter
를 부모로 하는 하위 블루프린트 클래스를 생성한다.Mesh 1P → Mesh
를 Clear (삭제)
BP_CryptRaiderGameMode 설정
- 새 GameMode 생성 →
Default Pawn Class
를BP_Player
로 지정한다. - 5.3이상부터는 Player Controller Class도
BP_FirstPersonPlayerController
로 지정해야 움직일 수 있었다.
상속 vs 컴포지션 🧬
구분 | 개념 | 예시 |
---|---|---|
상속 (is-a) | 하위 클래스가 상위 클래스의 기능을 자동 상속 | BP_Player 는 BP_FirstPersonCharacter 이다 |
컴포지션 (has-a) | 클래스가 다른 클래스의 인스턴스를 포함 | Mover 컴포넌트 를 포함한 액터 |
컴포지션은 필요 기능만 선택적으로 포함 가능
상속, 컴포지션,
C++ 액터 컴포넌트 ⚙️
Add C++ Component
로 커스텀 Mover 컴포넌트을 생성한다.- 생성 후
Mover.h
,Mover.cpp
가 자동 추가된다. Actor Component
는 별도 컴포넌트 섹션에 추가된다.
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 라이센스를 따릅니다.