Ch1-2. Bulls & Cows : VS setting, C++ component, FString, TEXT 매크로
카테고리: UE4Cpp1
태그: Cpp UE4 Game Engine
Udemy에 있는 Unreal Engine C++ Developer: Learn C++ and Make Video Games 강의를 듣고 정리한 필기입니다. 😀
Chapter 1. Bulls & Cows 게임 만들기
🚀 Visual Studio 세팅
에디터는 편집 - 에디터 개인 설정 - 소스코드 에서 바꿀 수 있다.
파일 - Visual Studio 열기 클릭
🚀 액터와 컴포넌트
Actor
- 여러개의 컴포넌트들이 붙을 수 있는 컨테이너
Component
- 유니티와 마찬가지로 언리얼에서도 C++ 코드가 컴포넌트로서 역할을 할 수 있다.
- 사용자 지정 Custom 컴포넌트인 셈
- Static Mesh 같은 것도 다 컴포넌트이다.
- 유니티와 마찬가지로 언리얼에서도 C++ 코드가 컴포넌트로서 역할을 할 수 있다.
- 액터도 다른 액터의 컴포넌트가 될 수 있다.
- 👉 모드에 있는 액터를 다른 액터의 컴포넌트로서 붙일 수 있다.
Bulls & Cows 게임은 사용자가 이 터미널에 입력을 하면서 이루어질 것이기 때문에 터미널 Actor에 📜BullCowCatridge.cpp 를 만들어 이를 컴포넌트로 붙여주어 동작하게 할 것이다.
이렇게 📜BullCowCatridge.cpp 를 컴포넌트로서 터미널 Actor에 붙였다.
🚀 언리얼에서의 문자열
📜BullCowCartridge.h
#pragma once
#include "CoreMinimal.h"
#include "Console/Cartridge.h"
#include "BullCowCartridge.generated.h"
UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
class BULLCOWGAME_API UBullCowCartridge : public UCartridge
{
GENERATED_BODY()
public:
virtual void BeginPlay() override;
virtual void OnInput(const FString& Input) override;
// Your declarations go below!
private:
};
📜BullCowCatridge.cpp
터미널 액터에 붙게 되는 컴포넌트
#include "BullCowCartridge.h"
void UBullCowCartridge::BeginPlay() // When the game starts
{
Super::BeginPlay();
PrintLine(TEXT("Wecome to Bull Cows!"));
PrintLine(TEXT("Press enter to continue..."));
}
void UBullCowCartridge::OnInput(const FString& Input) // When the player hits enter
{
// 아직 구현 X
}
- 언리얼도 일반 C++ 프로그래밍 방식과 같이 이렇게 헤더 파일엔 클래스와 함께 멤버 함수들은 프로토타입만 정의해놓고 이렇게
.cpp
파일에서 함수 바디를 정의해주는 것 같다.- 📜”BullCowCartridge.h” 헤더파일에
UBullCowCartridge
클래스가 있고 이 클래스는 멤버 함수 BeginPlay(), OnInput(const FString& Input) 를 가진다. 함수 바디 정의는 이 📜BullCowCatridge.cpp 에서 해준 것.
- 📜”BullCowCartridge.h” 헤더파일에
BeginPlay()
는 이 스크립트가 붙은 액터가 게임에서 처음으로 활성화될 때 실행 되는 그 BeginPlay()를 오버라이딩 한 함수다.- PrintLine 함수는 추후 작성할 📜Cartridge 클래스에 있는 멤버 함수다. (📜BullCowCatridge 클래스의 부모라 상속 받음)
- 터미널 액터에 텍스트를 띄우는 역할을 한다.
- 게임이 시작되면 위 두 줄의 텍스트가 터미널 액터에 그려진다.
- PrintLine 함수는 추후 작성할 📜Cartridge 클래스에 있는 멤버 함수다. (📜BullCowCatridge 클래스의 부모라 상속 받음)
FString & TEXT 매크로
PrintLine(TEXT("Wecome to Bull Cows!"));
FString HiddenWord = TEXT("cake");
TEXT
매크로 (참고)- 언리얼에서는 문자열 리터럴을 TEXT 매크로 안에 넣어서 넘기는게 좋다.
- 모든 플랫폼에서 2 바이트 문자열로 동작하게끔 해준다.
- 어떤 플랫폼에서든 동작할 수 있도록 언리얼이 인코딩을 해주기 때문이다.
- 언리얼에서는 문자열 리터럴을 TEXT 매크로 안에 넣어서 넘기는게 좋다.
- 언리얼의 3 가지 문자열 클래스
FName
FText
👉 언리얼의 자동 현지화(번역)를 지원한다.FString
👉 C++ 에서의string
처럼 문자열 처리와 관련된 메서드들 사용 가능
- 언리얼에선
int
말고int32
를 쓴다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기