Monster의 기본이 되는 상태들은 구현을 완료했다. Idle, Wander, Chase, Attack, Dead 상태를 구현해서 기본적인 전투 싸이클은 진행될 수 있는 상태이다.
Spawner에서 몬스터를 생성할 때, 어제 작성한 동적 생성 방식을 적용하지는 못했다.
현재 구조는 아래와 같이 되어 있는데, Monster 스크립트가 아무 기능이 없어서 Behavior로 나누지 않고 합쳐서 관리하는 게 현재 단계에서 편하고 좋을 것 같다.
몬스터의 데이터를 Spawner에서 생성할 때 데이터 초기화 함수를 호출하고 있는데, Monster에 MonsterData를 추가해 MonsterData를 받아와 Monster에서 초기화하는 방식으로 변경하려 한다.
객체란 무엇인가요? 클래스와 어떤 연관이 있나요?
객체란 우리 눈에 보이는 모든 대상부터 눈에 보이지 않는 추상적인 것까지 세상에 존재하는 모든 개념들을 말한다. 프로그래밍 관점에서 볼 때, 프로그램을 구성하는데 필요한 모든 개념이나 요소들을 객체라고 할 수 있다. 클래스는 이러한 객체의 속성과 행위를 변수와 메서드로 정의한 것으로, 객체를 나타내기 위한 설계도라고 할 수 있다.
=> 객체 - 클래스 - 인스턴스의 관계 위주로 간단하게 설명하기
생성자에 대해 간단하게 설명해주세요.
클래스로 정의된 객체를 인스턴스화 하기 위한 메서드이다. 생성자의 이름은 해당 클래스의 이름과 동일하다. (구조체 또한 생성자가 있다) (매개변수와 본문이 없는 생성자를 디폴트 생성자라고 하는데, 생성자를 직접 정의한 경우 디폴트 생성자는 만들어지지 않는다.)
접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.
접근제한자는 클래스나 필드, 메서드 등에 대해 외부의 접근을 제한하여 정보를 은닉하는 역할을 한다. C#에서는 public, private, protected, internal이 있다.
public으로 선언된 경우 모든 외부에서 접근할 수 있다.
private으로 선언된 경우 해당 클래스 내부에서만 접근할 수 있다.
protected로 선언된 경우 해당 클래스를 상속 받은 자식 클래스에서만 접근할 수 있다.
internal로 선언된 경우 같은 어셈블리 내에서만 접근할 수 있다.