강의

멘토링

커뮤니티

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

신진님의 프로필 이미지
신진

작성한 질문수

C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)

game manager 서두에

해결된 질문

작성

·

71

0

삭제된 글입니다

답변 1

1

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

메서드가 static이 아니라면 '클래스이름.메서드()'와 같은 방식으로 클래스의 메서드에 접근할 수 없습니다! 보내주신 코드에서 spawnManager라는 변수에 담은 것은 SpawnManager 클래스가 아니라 SpawnManager 클래스에 의해 생성된 객체입니다.

즉, static이 아닌 메서드는 클래스의 객체를 생성해서 접근해야 하며, 그 때문에 spawnManager라는 변수에 객체를 담아 메서드에 접근하는 것입니다! 감사합니다 :)

신진님의 프로필 이미지
신진
질문자

객체를생성한다고 하셨는데

SpawnManager spawnManager = new spawnManager();

의 형식으로 인스턴스화하지 않은 이유가 궁금해요

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

네 너무 좋은 질문 주셨네요! 2.16강 후반부에서 설명드렸듯이 유니티에서 객체를 생성하는 방법은 2가지가 있습니다. 

첫 번째는 생성자를 이용하는 것(SpawnManager spawnManager = new spawnManager();)

두 번째는 게임 오브젝트에 스크립트를 부착하는 것 (에디터에서 SpawnManager 게임 오브젝트에 SpawnManager 스크립트를 부착)

위 예제에서는 스크립트를 게임오브젝트에 부착함으로써 객체를 생성한 것이니 생성자를 이용해서 또 객체를 생성할 필요가 없겠죠! 추가적으로, MonoBehaviour를 상속받은 클래스는 생성자를 이용해서 객체를 생성하지 않고,  스크립트를 게임오브젝트에 부착함으로써 객체를 생성합니다.

감사합니다 ^^

신진님의 프로필 이미지
신진

작성한 질문수

질문하기