1. 언리얼 엔진 설치와 프로그래밍 환경 구축
생략
2. 언리얼 에디터에서의 클래스 추가
1. 언리얼 에디터 창의 Tools 버튼 -> New C++ Class..

2. GameInstance 를 상속받기

3. 자식 클래스의 이름 설정하고 Create

3. 언리얼 C++의 클래스 상속 및 오버라이딩 구현
* 주의사항: 비주얼 스크립트 상에서 코드 수정할 때 에디터 꺼놓고 하기
1. MyGameInstance 헤더 파일
UGameInstance 부모 클래스를 상속받은 UMyGameInstance 이다. 부모 클래스의 Init() 가상 메서드를 상속 받아 오버라이드 한다.

2. UMyGameInstance cpp 파일
상속 받은 Init 메서드를 구현한 내용이 들어있다. Init 메서드의 사용자가 직접 추가하려고 하는 로직을 작성하기 전에 Super::Init() 을 호출해야 한다.
Super 는 부모 클래스를 지칭하는 것이다. 부모 클래스의 Init() 을 먼저 호출해야 하기 때문이다. 이유는 언리얼 엔지니어들이 미리 구축해놓은 것들을 다 실행하기 위함. 이를 생략하면 문제 발생의 가능성이 높음

4. 언리얼 엔진의 문자열 처리의 이해
1. UE_LOG
언리얼에서 제공하는 로그 띄우는 메서드. 매개변수로 로그 카테고리, 출력 수준, format, 출력할 내용을 받는다.
로그 카테고리는 로그를 카테고리별로 구분하기 위함. 출력 수준은 일반, 에러, 경고 등의 수준을 알리기 위함.
TEXT 는 통일된 문자열을 다루기 위한 매크로(한글 써도 문제 없도록). 아무튼 TEXT("%s) 를 통해 문자열을 출력함을 알리고, TEXT("Hello Unreal!") 을 통해 출력할 문자열 지정

5. 게임인스턴스 클래스의 적용과 카테고리를 활용한 로그 확인
1. Game Instance
기존의 GameInstance 로 설정되어 있던 것을 MyGameInstance 로 바꿨다. 그러면 엔진이 활성화 되어 있고 프로그램을 실행할 때 내가 만든 MyGameInstance 를 대신 사용해서 Init() 메서드를 호출하면서 초기화 진행해줌.
우리가 만든 MyGameIntance 는 Init 에서 부모 클래스의 Init 를 호출하기 때문에 문제 없음.

2. Game Instance
오픈월드 복잡한 씬이 나오는 게 지금 필요없기 때문에 둘 다 None 으로 설정해서 아무것도 없도록. 재시작 해야함.

3. 로그 확인
Output Log 에 들어간 후 LogTemp 로그만 확인 할 수 있도록 필터링 해준다. 필터링 하는게 귀찮다면 검색창에 LogTemp 치면 됨.
