인프런 커뮤니티 질문&답변
답변 1
1
백현우
지식공유자
메서드가 static이 아니라면 '클래스이름.메서드()'와 같은 방식으로 클래스의 메서드에 접근할 수 없습니다! 보내주신 코드에서 spawnManager라는 변수에 담은 것은 SpawnManager 클래스가 아니라 SpawnManager 클래스에 의해 생성된 객체입니다.
즉, static이 아닌 메서드는 클래스의 객체를 생성해서 접근해야 하며, 그 때문에 spawnManager라는 변수에 객체를 담아 메서드에 접근하는 것입니다! 감사합니다 :)
백현우
지식공유자
네 너무 좋은 질문 주셨네요! 2.16강 후반부에서 설명드렸듯이 유니티에서 객체를 생성하는 방법은 2가지가 있습니다.
첫 번째는 생성자를 이용하는 것(SpawnManager spawnManager = new spawnManager();)
두 번째는 게임 오브젝트에 스크립트를 부착하는 것 (에디터에서 SpawnManager 게임 오브젝트에 SpawnManager 스크립트를 부착)
위 예제에서는 스크립트를 게임오브젝트에 부착함으로써 객체를 생성한 것이니 생성자를 이용해서 또 객체를 생성할 필요가 없겠죠! 추가적으로, MonoBehaviour를 상속받은 클래스는 생성자를 이용해서 객체를 생성하지 않고, 스크립트를 게임오브젝트에 부착함으로써 객체를 생성합니다.
감사합니다 ^^





객체를생성한다고 하셨는데
SpawnManager spawnManager = new spawnManager();
의 형식으로 인스턴스화하지 않은 이유가 궁금해요