인프런 커뮤니티 질문&답변

themoon007님의 프로필 이미지
themoon007

작성한 질문수

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

5강 언리얼 오브젝트 리플렉션 시스템 I

gameinstance 초기화 함수 호출 타이밍

해결된 질문

작성

·

420

0

게임인스턴스는 전역이고, 에디터를 틀 때나 게임 실행할 때, 한번만 실행한다고 안 했나요???

 

에디터에서 시작 누를 때 마다 게임인스턴스의 생성자 함수가 계속 호출 되던데, 이건 무슨 뜻인가요????

답변 1

1

이득우님의 프로필 이미지
이득우
지식공유자

게임인스턴스는 전역이라기보다는 게임 프로그램에서 유일함을 보장해주는 객체 인스턴스(싱글톤)입니다.
언리얼 에디터도 언리얼 엔진으로 제작된 프로그램이기 때문에, 에디터를 초기화 시점에서 우리가 사용하는 게임 인스턴스의 생성자가 실행됩니다.
그리고나서 에디터가 만들어 낸 샌드박스 환경(PIE, Play In Editor) 내에서 게임을 실행할 때는 마찬가지로 독립된 환경처럼 동작해야 하기 때문에 게임 인스턴스가 또 실행됩니다. 그래서 여러 번 호출됩니다만, 언리얼 엔진은 이를 감안해 실제 우리가 제작한 게임 안에서는 해당 인스턴스의 유일성을 보장해줍니다.
이러한 특수한 구조로 인해 일반적인 C++ 문법의 전역 혹은 스태틱 변수를 사용하는 경우, 이들은 에디터 프로그램의 스태틱으로 관리되어 시뮬레이션을 시작할 때 초기화되지 않아 예기치 못한 문제를 발생시킬 수 있으니 주의하시기 바랍니다.

themoon007님의 프로필 이미지
themoon007

작성한 질문수

질문하기