부모 / 자식 클래스
AProjectBasicACharacter의 부모 : ACharacter
UProjectAGameInstance의 부모 : UGameInstance
AProjectBasicAGameMode의 부모 : AGameMode
AProjectBasicAGameState의 부모 : AGameState
AProjectBasicAHUD의 부모 : AHUD
AProjectBasicAPlayerController의 부모 : APlayerController
AProjectBasicAPlayerState의 부모 : APlayerState
ACharacter의 부모 클래스 APawn
UGameInstance의 부모 클래스 UObject, FExec
AGameMode의 부모 클래스 AGameModeBase
AGameState의 부모 클래스 AGameStateBase
AHUD의 부모 클래스 AActor
APlayerController의 부모 클래스 AController, IWorldPartitionStreamingSourceProvider
APlayerState의 부모 클래스 AInfo
APawn의 부모 클래스 AActor, INavAgentInterface
UObject의 부모 클래스 UObjectBaseUtility
FExec의 부모 클래스 X
AGameModeBase의 부모 클래스 AInfo
AGameStateBase의 부모 클래스 AInfo
AActor의 부모 클래스 UObject
AController의 부모 클래스 AActor, INavAgentInterface
IWorldPartitionStreamingSourceProvider의 부모 클래스 X(구조체)
AInfo의 부모 클래스 AActor
INavAgentInterface의 부모 클래스 X
UObjectBaseUtility의 부모 클래스 UObjectBase
UObjectBase의 부모 클래스 X
클래스 순서도
| UObjectBase |
|
|||
| UObjectBaseUtility |
||||
| FExec | UObject |
|||
| UGameInstance | AActor |
INavAgentInterface | ||
| UProjectAGameInstance | AHUD |
APawn |
||
| |
ACharacter | |||
| AProjectBasicAHUD | AProjectBasicACharacter | |||
| AController |
IWorldPartition StreamingSourceProvider |
UObjectBase | INavAgentInterface |
| UObjectBaseUtility | |||
| UObject | |||
| APlayerController | AActor | ||
| AController | |||
| APlayerController | |||
| AProjectBasicAPlayerController | |||
| UObjectBase | ||
| UObjectBaseUtility | ||
| UObject | ||
| AActor | ||
| AInfo | ||
| AGameModeBase | AGameStateBase | APlayerState |
| AGameMode | AGameState | |
| AProjectBasicAGameMode | AProjectBasicAGameState | AProjectBasicAPlayerState |
클래스 분석
<AProjectBasicACharacter>
학습 전 이름을 토대로 예측해 본 역할 : 게임에 스폰되는 모든 캐릭터가 갖고 있는 공통된 기능을 지니고 있는 캐릭터 클래스
AProjectBasicACharacter의 실제 역할 : 선택한 시점 기준으로 움직이는 플레이어 캐릭터의 기본 골격 + 카메라 시스템을 책임지는 베이스 클래스
내 추측과의 차이점 : 클래스의 이름만 보고 NPC를 포함한 모든 캐릭터가 공통으로 상속받는 클래스라고 추측했지만, 실제로는 사용자가 직접 조작하는 플레이어 캐릭터에 특화된 기능과 플레이어의 시점을 구성하는 카메라 구조를 포함하고 있는 클래스였다.
학습 후, 내가 생각한 활용 방안 : 다양한 게임 시점(1인칭, 3인칭, 탑뷰 등)을 캐릭터 단위에서 통합적으로 제어하는 구조로 활용할 것 같다. 예를 들어 배틀그라운드와 같이 v키를 입력하면 1인칭 -> 3인칭, 3인칭 ->1인칭으로 변경되는 것처럼 카메라의 고정 위치값을 플레이어 캐릭터를 기준으로 변경하는 것이다.
<UProjectAGameInstance>
학습 전 이름을 토대로 예측해 본 역할 : Instance라는 명칭을 근거로, 개발자가 클래스를 기반으로 생성한 여러 객체들을 총괄적으로 관리하는 상위 클래스일 것이라 추측함.
UProjectAGameInstance의 실제 역할 : 게임이 실행되는 동안 유지되어야 하는 전역 상태와 전역 서비스를 보관하고, 다른 시스템들이 공통으로 접근할 수 있도록 제공하는 최상위 컨테이너 역할을 수행함.
내 추측과의 차이점 : Instance라는 단어의 일반적인 의미(객체의 실체)에 지나치게 집중한 나머지, Instance가 클래스를 토대로 생성된 실제 객체를 포괄적으로 의미하고 있다는 사실을 잊고서 해당 클래스가 게임에 전반적인 영향력을 행사할 수 있을 가능성을 생각하지 못함.
학습 후, 내가 생각한 활용 방안 : 옵션에서 설정한 그래픽 품질, 사운드 설정, 언어 설정 등 사용자가 사전에 이미 설정해 놓은 옵션 데이터를 보관할 공간으로 활용할 것 같다.
<AProjectBasicAGameMode>
학습 전 이름을 토대로 예측해 본 역할 : 현재 게임에서 다루고 있는 전반적인 규칙을 총괄하고 있는 클래스
AProjectBasicAGameMode의 실제 역할 : 현재 레벨에서 적용되는 게임 규칙을 정의하고 결정하는 클래스
내 추측과의 차이점 : Mode라는 단어가 들어가 있기에 해당 게임의 전반적인 규칙을 총괄하고 있는 줄 알았지만, 규칙을 정의하는 것은 맞지만 그것이 총괄이 아닌, 각각의 레벨에 한정된다는 점이 달랐다.
학습 후, 내가 생각한 활용 방안 : 다음 레벨로 넘어가기 위한 규칙 혹은 조건을 관리하도록 활용할 것 같다.
<AProjectBasicAGameState>
학습 전 이름을 토대로 예측해 본 역할 : 현재 레벨에서 진행되고 있는 모든 이벤트 및 객체의 상태를 총괄하는 클래스
AProjectBasicAGameState의 실제 역할 : 현재 레벨에서 벌어지고 있는 게임의 상태를 담는 클래스
내 추측과의 차이점 : 현재 레벨에서 벌어지는 게임의 상태를 저장한다는 의미가 내가 생각한 것과 사소한 차이점이 존재한다. 나는 레벨의 모든 객체와 이벤트의 상태를 관리할 줄 알았지만, 실제로는 레벨에서 공통적으로 다루는 상태를 관리하는 클래스였다.
학습 후, 내가 생각한 활용 방안 : 킬/데스/어시스트 값을 저장하거나, 생존/죽음의 상태 값을 판단하고 저장하는 역할로 활용할 것 같다. 이후, 해당 데이터를 저장하고 있다가 레벨이 변경될 때, 해당 데이터를 다음 레벨로 전달한다.
<AProjectBasicAHUD>
학습 전 이름을 토대로 예측해 본 역할 : HAD가 Head-Up Display의 약자라는 사실을 확인하였고, Display라는 단어를 토대로 추측해보건데, 해당 클래스는 사용자에게 눈에 보이는 화면에 나오는 UI나 이미지, 애니메이션, 이펙트 등을 관리하는 클래스일 것 같다.
AProjectBasicAHUD의 실제 역할 : 플레이어의 시점 위에 겹쳐서 표시되는 게임 플레이용 정보 레이어를 담당하는 클래스다.
내 추측과의 차이점 : HUD가 화면에 보이는 모든 UI 요소를 관리할 것이라 예상했지만,실제로는 메뉴나 애니메이션, 이펙트까지 포함하는 포괄적인 UI 관리자가 아니라, 게임 플레이 중 플레이어에게 필요한 상태 정보(HUD 요소)를 화면에 표시하는 역할에 한정된 클래스였다.
학습 후, 내가 생각한 활용 방안 : 체력바 혹은 스킬 UI, 옵션 UI, 아이템창 같은 기능을 구현하는데 활용할 것 같다.
<AProjectBasicAPlayerController>
학습 전 이름을 토대로 예측해 본 역할 : 사용자가 컨트롤 하는 플레이어 캐릭터의 행동 로직을 관리하는 클래스로 추측한다.
AProjectBasicAPlayerController의 실제 역할 : 플레이어의 입력을 받아서, 어떤 Pawn(캐릭터)을 어떻게 조작할지 지시하는 클래스
내 추측과의 차이점 : 플레이어 캐릭터가 실제로 수행하는 행동 로직을 관리하는 클래스라고 생각했지만, 실제로는 행동을 직접 구현하는 클래스가 아니라, 플레이어의 입력을 해석하여 조작 대상(Pawn)에게 행동을 지시하는 중개자 역할을 수행하는 클래스였다. (약간, IA가 아닌 IMC같은 역할)
학습 후, 내가 생각한 활용 방안 : 캐릭터의 이동 기능을 구현하는데 활용할 것 같다.
<AProjectBasicAPlayerState>
학습 전 이름을 토대로 예측해 본 역할 : 사용자가 다루는 플레이어 캐릭터의 현재 상태를 관리하고 있는 클래스로 추측한다.
AProjectBasicAPlayerState의 실제 역할 : 플레이어를 특정할 수 있는 현재 상태 데이터를 저장하고, 게임 내 다른 플레이어들과 공유(동기화)하는 클래스
내 추측과의 차이점 : 플레이어 캐릭터의 현재 상태를 관리하는 클래스라고 생각했지만 실제로는 캐릭터의 상태가 아니라 플레이어 자체의 상태를 저장하고, 캐릭터가 교체되거나 리스폰되더라도 유지되어야 하는 정보를 관리하는 클래스였다.
학습 후, 내가 생각한 활용 방안 : 각자 사용자에 따라 다르게 값이 적용되도록 Player인스턴스를 구분하도록 활용할 것 같다.
'[Unreal엔진] C++ > C++ 개발환경' 카테고리의 다른 글
| Build Configuration 정리 (0) | 2026.01.28 |
|---|---|
| [언리얼 엔진 C++] 각 클래스 파일의 역할 정리 (1) | 2026.01.08 |
