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