• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

game manager 서두에

21.04.28 05:45 작성 조회수 28

0

삭제된 글입니다

답변 1

답변을 작성해보세요.

1

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

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

신진님의 프로필

신진

질문자

2021.04.29

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

SpawnManager spawnManager = new spawnManager();

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

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

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

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

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

감사합니다 ^^