게임 중엔 다양한 정보들이 누적된다. 잠깐만 필요한 정보들도 있겠지만,(미니게임에서 사용된 정보라던지..) 게임이 종료될 때까지 유지되어야하는 정보들(점수, 레벨, 기록 등)도 있다. 게임모드나 스테이트같은 경우는 레벨(월드)이 바뀌면 초기화되기때문에 이런 정보들은 다른 곳에 저장해주어야한다. 그 곳이 GameInstance다.
GameInstance는 게임이 종료될 때까지 정보를 유지한다. 게임의 전반적인 흐름을 관리하기 위해서다.(시작->메뉴->게임->결과->종료) 그래서 유지해야하는 정보를 저장하기에도 적절하다. 물론 너무 복잡하거나 잦은 갱신정보 등은 구조상 적절하지 않지만, 로그인 정보나 옵션, 상태나 세션정보 등은 인스턴스에서 관리하기 적합하다. 그러나 아무리 그렇더라도 너무 많은 종류의 정보를 인스턴스 한곳에 저장하면 유지보수가 어려워질 수 있다. 그래서 GameInstance는 본체로써 사용하고, Subsystem을 이용해서 기능을 세분화한 뒤 조립해주는 방식을 사용해볼 수 있다.
1.GameInstanceSubsystem
- GameInstance의 기능을 따로 분리해서 정리한 후, 모듈처럼 다시 GameInstance에 조립하는 시스템
- GameInstance가 회사라면, GameInstanceSubsystem은 하나의 부서라고 볼 수 있다.
- 분리/조립이 가능하기에, 프로젝트를 옮겨도 조립할 수 있다.
- 정보를 저장하는 플러그인에 사용하면 유연하게 조립이 가능하다.
- 세이브 데이터, 플레이어 데이터, 게임 옵션 등 여러 파트로 나눠 사용한다.
2. 클래스 생성 방법(플러그인에 사용 시)
- C++ 프로젝트 상에서.



- 비주얼 스튜디오에 클래스가 생성된다.
3. 코드 작성


- GameInstanceSubsystem을 가져와서 함수를 호출해준다.

- 플러그인의 building.cs 파일에서 모듈을 추가해줘야 Subsystem을 사용할 수 있다.
4. 에디터 상에서 실행


- 기본 레벨과 전환될 레벨의 블루프린트


- 티는 안나지만 레벨이 전환되었고, 정보가 유지되었다.
'게임 개발 공부 > 언리얼엔진' 카테고리의 다른 글
| UE5 - 데이터 애셋 (0) | 2025.04.08 |
|---|---|
| UE5 - 비헤이비어트리 기본 용어 (0) | 2025.04.02 |
| UE5 | C++ 기초 - 블루프린트와 c++의 차이 (0) | 2025.03.24 |
| UE5 - 사운드 재생 (0) | 2025.03.21 |
| UE5 | C++ 개발 - 블루프린트 펑션 라이브러리 (0) | 2025.03.20 |