# GameInstance
게임 프로그램이 실행되는 동안 유지되는 최상위 게임 객체
레벨이 변경되어도 사라지지 않으며 게임 전체 상태를 관리한다.
---
# 생명 주기
```text
게임 실행
|
v
GameInstance 생성
|
v
MainMenu 레벨
|
v
Lobby 레벨
|
v
Battle 레벨
|
v
게임 종료
|
v
GameInstance 소멸
```
GameInstance는 게임이 시작될 때 한 번 생성되고
게임이 종료될 때까지 유지된다.
레벨 전환(맵 이동)이 발생해도 파괴되지 않는다.
---
# 사용 목적
레벨이 바뀌어도 유지되어야 하는 데이터를 저장할 때 사용한다.
## 전역 데이터 관리
- 플레이어 프로필
- 게임 설정
- 레벨 간 공유 데이터
- 저장 데이터
## 게임 세션 관리
- 멀티플레이어 세션
- 네트워크 연결 상태
- 로그인 정보
---
# 사용 예시
게임 실행 중 계속 유지되어야 하는 데이터
- 플레이어 닉네임
- 선택한 캐릭터
- 현재 언어 설정
- 마스터 볼륨
- BGM 볼륨
- 그래픽 설정
- 서버 연결 정보
---
# 코드 예시
```cpp
class UMyGameInstance : public UGameInstance
{
GENERATED_BODY()
public:
virtual void Init() override;
virtual void Shutdown() override;
UPROPERTY(BlueprintReadWrite, Category = "InstanceData")
int32 InstanceData;
};
```
---
# 주요 함수
## Init()
GameInstance가 생성될 때 호출된다.
```cpp
virtual void Init() override;
```
주로
- 데이터 초기화
- 서버 연결
- 설정 파일 로드
등을 수행한다.
---
## Shutdown()
게임이 종료될 때 호출된다.
```cpp
virtual void Shutdown() override;
```
주로
- 데이터 저장
- 서버 연결 종료
- 리소스 정리
등을 수행한다.
---
# 특징
- 게임 실행 중 단 하나만 존재한다.
- 레벨이 변경되어도 유지된다.
- 게임 종료 시 소멸된다.
- 전역 데이터 저장에 적합하다.
- 모든 레벨에서 접근 가능하다.
---
# GameInstance와 GameMode 차이
| 구분 | GameInstance | GameMode |
|--------|--------|--------|
| 생성 시점 | 게임 시작 | 레벨 시작 |
| 소멸 시점 | 게임 종료 | 레벨 종료 |
| 레벨 이동 시 | 유지됨 | 새로 생성됨 |
| 서버/클라이언트 | 둘 다 존재 | 서버에만 존재 |
| 사용 목적 | 전역 데이터 관리 | 게임 규칙 관리 |
'언리얼 > 언리얼 학습' 카테고리의 다른 글
| FOnlineSessionSettings (0) | 2026.06.03 |
|---|---|
| FInputModeUIOnly (0) | 2026.06.02 |
| GameMode (1) | 2026.06.01 |
| Delegate (델리게이트) (0) | 2026.06.01 |