728x90
* 아래의 책의 내용을 정리한 글입니다! *
이번 4장에서는 언리얼 프로젝트에서 기본이 되는 요소들
GameMode , PlayerController, pawn 등이 어떻게 생성되는지
어떻게 설정하는지에 따른 내용이었습니다.
먼저!
GameMode?
게임의 기본적인 설정을 할 수 있는 요소로현재 게임의 폰, 컨트롤러, 스태이트 등 중요한 것들을 설정할 수 있습니다!
PlayerController?
현재 사용자가 어떤 액터를 통해 플레이하기 위해 폰과 사용자를 연결해주는 요소라고 할 수 있습니다!
Pawn?
사용자가 플레이할 게임 캐릭터!
등등 중요한 요소들이 있지만 일단 이 3가지 요소들을 통해 게임의 단계를 알아보도록 하겠습니다.
게임의 시작 버튼을 누르게 되면
- 플레이어 컨트롤러의 생성
- 플레이어 폰의 생성
- 플레이어 컨트롤러가 플레이어 폰을 빙의
- 게임의 시작
순서로 게임이 진행됩니다
이걸 좀 더 시각적으로 알아보기 위해 로그를 찍어봅시다!
먼저 Pawn와 플레이어 컨트롤러를 만들어 봅시다!
하나씩 추가한 다음다음의 코드를 작성해줍니다!
ABPlayerController.h
#pragma once
#include "ArenaBattle.h"
#include "GameFramework/PlayerController.h"
#include "ABPlayerController.generated.h"
/**
*
*/
UCLASS()
class ARENABATTLE_API AABPlayerController : public APlayerController
{
GENERATED_BODY()
protected:
virtual void BeginPlay() override;
public:
virtual void PostInitializeComponents() override;
virtual void OnPossess(APawn* aPawn) override;
};
ABPlayerController.cpp
#include "ABPlayerController.h"
void AABPlayerController::BeginPlay()
{
Super::BeginPlay();
FInputModeGameOnly InputMode;
SetInputMode(InputMode);
}
void AABPlayerController::PostInitializeComponents()
{
Super::PostInitializeComponents();
ABLOG_S(Warning);
}
void AABPlayerController::OnPossess(APawn* aPawn)
{
ABLOG_S(Warning);
Super::OnPossess(aPawn);
}
ABPawn.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "ArenaBattle.h"
#include "GameFramework/Pawn.h"
#include "GameFramework/FloatingPawnMovement.h"
#include "ABPawn.generated.h"
UCLASS()
class ARENABATTLE_API AABPawn : public APawn {
GENERATED_BODY()
public:
// Sets default values for this pawn's properties
AABPawn();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
virtual void PostInitializeComponents() override;
virtual void PossessedBy(AController* NewController) override;
ABPawn.cpp에 추가
//~~~
void AABPawn::PostInitializeComponents()
{
Super::PostInitializeComponents();
ABLOG_S(Warning);
}
void AABPawn::PossessedBy(AController* NewAxisValue)
{
ABLOG_S(Warning);
Super::PossessedBy(NewAxisValue);
}
//~~~
그다음 게임모드를 수정해 줍시다.
ABGameMode.h 에 추가
virtual void PostLogin(APlayerController* NewPlayer) override;
ABGameMode.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "ABGameMode.h"
#include "ABPawn.h"
#include "ABPlayerController.h"
AABGameMode::AABGameMode()
{
DefaultPawnClass = AABPawn::StaticClass(); // 기본값 설정!
PlayerControllerClass = AABPlayerController::StaticClass();
}
void AABGameMode::PostLogin(APlayerController* NewPlayer)
{
ABLOG(Warning, TEXT("PostLogin Begin"));
Super::PostLogin(NewPlayer);
ABLOG(Warning, TEXT("PostLogin End"));
}
하고 실행하면
아래처럼 로그가 남게 됩니다!
- 플레이어 컨트롤러의 생성
- 플레이어 폰의 생성
- 플레이어 컨트롤러가 플레이어 폰을 빙의
- 게임의 시작!
그리고 게임모드의 기본값도 잘 설정돼있는 걸 볼 수 있습니다!
틀린 점이 있다면 댓 달아주세요!
'언리얼 최고 > 언리얼 c++' 카테고리의 다른 글
이득우의 언리얼 C++ 정리 - 6 (캐릭터의 제작과 컨트롤) (0) | 2022.08.20 |
---|---|
이득우의 언리얼 C++ 정리 - 5 (폰의 제작과 조작) (0) | 2022.08.19 |
언리얼 C++ 액터 삭제에 대해서! (0) | 2022.08.17 |
이득우의 언리얼 C++ 정리 - 3 (로깅 + 움직이는 액터) (0) | 2022.08.16 |
이득우의 언리얼 C++ 정리 - 2 (액터의 설계) (1) | 2022.08.16 |
댓글