언리얼/언리얼 학습

GameInstance

코드망령 2026. 6. 1. 18:08

# 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