헬로 언리얼 출력하기까지의 여정
- 언리얼 엔진 설치와 프로그래밍 환경 구축(Debugging symbol 추가 옵션으로, visual studio는 C++사용한 게임 개발 추가 옵션으로)
- 언리얼 에디터에서의 클래스 추가
- 컴파일 하는 방법에서의 규칙
- 언리얼 C++의 클래스 상속 및 오버라이딩 구현
- 언리얼 엔진의 문자열 처리의 이해(TEXT매크로)
- 게임인스턴스 클래스의 적용과 카테고리를 활용한 로그 확인
1. 언리얼 설치 및 기본 설치와 프로그래밍 환경 구축

디버깅을 위한 편집기 기호(debugging symbol )도 설치해줍니다.
엔진 소스 코드 디버깅에 필요한 심볼 기호들이 저장이 되어있기 때문에 엔진 레벨에서 언리얼 엔진이 어떻게 동작하는지 알고 싶으면 이걸 체크해야 합니다.

비쥬얼 스튜디오를 설치하고 visual studio installer에 가서 이 옵션을 켜줍니다.
언어팩에 영어를 추가해 줍니다. 영어 자료가 많기 때문입니다.
언리얼 엔진을 실행하고, Games→Blank를 선택하고, C++를 선택합니다.

edit→editor preference→General-region&Language에서 English로 설정을 합니다.

source code editor에서 visual studio의 버전을 지정해줍니다.

visual studio의 언어를 영어로 바꿔줍니다.

tools→ options→project and solutions→general로 가서
always show error list if build finishes with errors를 끕니다.(필수는 아닙니다.)


이 부분을 늘려 주기 위해서
오른쪽 클릭→customize→commands→toolbar→ standard →Solution Configuration→ Modify Selection→width를 65에서 200으로 바꿔줍니다.
길이가 늘어난 것을 볼 수 있습니다.
2. 언리얼 에디터에서의 클래스 추가
기본적 프로그램의 뼈대를 엔진이 제공합니다.
Hello Unreal을 출력하려면 출력을 담당하는 객체가 있어야 합니다.
적합한 클래스 설계하고, 엔진 구조에 맞게 집어 넣어야 합니다.
GameInstance라는 클래스를 상속 받아서 우리만의 GameInstance를 만든 후에 문자열 출력하게 할 겁니다..
만든 클래스를 Engine이 돌아가는 프로그램에 끼워 넣어서, 기본 GameInstance가 아닌 내가 만든 MyGmaeInstance를 사용해서 초기화 해라 명령을 내릴 것입니다.
tools→ new C++ class를 선택합니다.

Common Classes에는 컨텐츠 제작에 필요한 클래스들이 많이 있습니다.
우리는 아직 게임제작이 아니라 동작원리 파악하고자 하기 때문에 일반적이지 않은 클래스를 이용해서 클래스를 만들것입니다.
All Classes에서 GameInstance를 검색해서 선택하고 next를 클릭한다. 그리고 CreateClass를 누릅니다.
에디터가 코딩, 컴파일까지 다 진행을 하고, 솔루션 구조도 바꿔줍니다.
VS 에서 reload all을 누르면 솔루션이 재 구축됩니다.

3. 컴파일 하는 방법에 대한 규칙
컴파일 하는 방법에 대해 까다로운 규칙이 있습니다.
언리얼 엔진에서 코드를 컴파일 하는 방법이 쉽지가 않습니다. 소스 코드가 방대하고, 연관되어서 언리얼 엔진 규칙도 까다롭기 때문입니다. 빠르게 컴파일 할 수 있게 에픽 게임즈 엔지니어들이 많은 시도를 하고 개선하고 있습니다.
case1 설계를 자주 변경할 경우
헤더파일의 클래스가 계속 변경이 발생이 하면, 에디터를 끄고 비주얼 스튜디오에서 컴파일 한 다음에 적용하는 것이 가장 까끔합니다.
case2 설계가 아닌 구현에 대해서만 변경할 경우
언리얼 엔진이 제공하는 라이브 코딩으로 컴파일 하면 되는데 ctrl + alt + f11 단축키를 사용하면 됩니다. 언리얼 에디터가 켜져 있는 경우는 라이브 코딩으로 진행을 해줘야 합니다.
비주얼 스튜디오에서 빌드를 하게 되면 에러 메시지가 뜨게 됩니다.
2>Unable to build while Live Coding is active. Exit the editor and game, or press Ctrl+Alt+F11 if iterating on code in the editor or game
라이브 코딩이라 언리얼 끄거나, 언리얼에서 ctrl+ alt+f11을 눌러서 하라고 나옵니다.
라이브 코딩은 헤더파일에서 변경이 발생하면 잘못 동작할 부분도 있습니다. 설계를 바꾼다면 가급적 에디터를 꺼주는게 좋습니다.
언리얼 에디터를 끄고 빌드를 진행해 보면 정상적으로 컴파일이 되는 것을 볼 수 있습니다.
4. 언리얼 C++의 클래스 상속 및 오버라이딩 구현
여기서 설계를 바꿔볼건데, UGameInstance가 가지고 있는 함수중 Init함수가 있습니다.
UGameInstance를 상속 받아서 Init을 오버라이딩해서 재구성을 해봅시다.
아까 만든 MyGameInstance.h에
virtual void Init() override;를 선언하고 alt + enter를 누르면 Create definition 을 선택하면 정의부를 만들어 줍니다.
이렇게 재구현하는 거의 대부분의 경우 언리얼 엔진이 구현을 해놓은 코드를 실행을 해줘야 합니다. 왜냐하면, 전체 플로우가 동작할 수 있게 에픽게임즈에서 만들어 놓은 거라 무시하면 어떤 상황이 발생할지 모르기 때문입니다.
void UMyGameInstance::Init()
{
Super::Init();
UE_LOG(LogTemp, Log, TEXT("%s"), TEXT("Hello Unreal!"));
}
이렇게 Super::를 넣으면 부모 클래스를 가리키게 됩니다.
그 뒤에 코드를 추가해주면 됩니다.
5. 언리얼 엔진의 문자열 처리의 이해(TEXT매크로)
한글이나 한자같이 2바이트를 표시하는데 문제가 없게 TEXT 매크로로 감싸줍니다.
6. 게임인스턴스 클래스의 적용과 카테고리를 활용한 로그 확인
빌드 후 ctrl+f5(디버깅 없이 스타트) 하면 언리얼 에디터가 실행됩니다.
지금은 그래픽 계산이 필요 없기 떄문에 설정을 꺼줍니다.
Edit→project setting→maps&modes→
여기로 가서 가장 밑에 Game Instance Class가 있다. 이건 컨텐츠를 담는 어플리케이션의 뼈대라고 보면 됩니다.
Application 마다 싱글턴이라고 하는 단일 인스턴스로 관리가 됩니다.
컴퓨터에서 이 게임을 3개 띄었다고 하면 GameInstance가 프로그램 별로 하나씩 Singleton 형태로 뜨게 됩니다.
이걸 방금 만든 MyGameInstance로 변경해줍니다.
이러면 프로그램을 실행할 때 내가 만든 걸 대신 사용해서 Init 함수를 사용해 초기화 진행합니다.
오픈월드 그래픽 지금 필요 없기 떄문에 DefaultMaps에서 Map 두개를 None으로 해줍니다.

재시작해야 볼 수 있으니 에디터를 끄고, 비쥬얼 스튜디오에서 ctrl+f5키로 디버깅 없이 start 합니다.
이제 비어있는 화면이 보입니다.
언리얼 에디터에서 플레이 버튼을 눌러서 로그가 뜨는지 보려는데 로그가 너무 많습니다
필터에서 LogTemp만 보이게 설정을 하면
LogTemp: Hello Unreal! 이렇게 로그가 뜨는 것을 볼 수 있습니다.
아니면 그냥 LogTemp라고 검색하면 됩니다.

'Unreal engine > Unreal C++' 카테고리의 다른 글
| 1_5_언리얼 오브젝트의 이해_언리얼 오브젝트 리플렉션 시스템1 (0) | 2023.09.18 |
|---|---|
| 1_4_언리얼 오브젝트의 이해_언리얼 오브젝트 기초 (0) | 2023.09.18 |
| 1_3_언리얼 오브젝트의 이해_언리얼C++ 기본타입과 문자열 (0) | 2023.09.15 |
| 1_2_언리얼 오브젝트의 이해_언리얼 C++ 코딩규칙 (0) | 2023.09.14 |
| 0_1. 강의소개: 언리얼 프로그래밍 공부법 (0) | 2023.09.11 |
댓글