내일배움캠프 69일차 TIL
오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다.
MVC 모델이란?
- MVC 패턴이란 Model-View-Controller의 약자로, 기능을 세 가지 역할로 구분한 디자인 패턴입니다. 사용자가 컨트롤러를 조작하면 컨트롤러는 모델을 통해 데이터를 가져오고, 그 데이터를 바탕으로 뷰를 통해 시각적 표현을 제어하여 사용자에게 전달합니다.
- MVC 패턴을 성공적으로 사용하면 비즈니스 로직과 UI 로직을 분리하여 유지보수를 독립적으로 수행할 수 있다. 또한 모델과 뷰가 다른 컴포넌트들에 종속되지 않아 기능의 확장성, 유연성에 유리하다.
- 현재 인벤토리 시스템을 개발하고 있는데, 인벤토리 UI 에서 모든 기능을 담당하고 있어서 추후 유지보수시 어려움이 발생할 수 있기 때문에 MVC 패턴을 도입하여 리팩토링을 진행할 필요가 있어 보인다.
Unity 생명주기
- 유니티의 생명주기는 'Monobehaviour'을 상속받은 클래스가 Scene에서 사용되는 기본적인 메소드들의 흐름이다.
- 시작 단계에서 사용되는 메소드는 Reset-Awake-OnEnable-Start 순으로 시작단계로 해당 오브젝트와 클래스가 시작될 때 작동된다. Awake 함수는 비활성화 상태에서도 호출되며, Start 함수는 활성화 상태일 경우에만 호출되므로 두 상관관계를 고려해서 초기화작업을 진행할 수 있다.
- 다음은 FixedUpdate-OnTrigger-OnCollision-Update-LateUpdate 순으로 클래스의 주요 이벤트 수행한다.
- 마지막으로 OnDisable-OnDestroy-OnApplicationQuit 순으로 오브젝트와 스크립트를 종료합니다. 해당 행동들은 생략이 가능한 부분도 존재한다. 하지만, 시작-이벤트-종료의 흐름은 고정적으로 흘러간다.
MonoBehaviour 클래스의 주요 메서드와 그 기능
유니티의 MonoBehaviour 클래스는 게임 오브젝트에 부착되는 스크립트에서 사용되는 기본 클래스이다. 이 클래스에는 여러 가지 주요 메서드가 있으며, 각 메서드는 특정한 시기나 상황에 호출되어 특정한 기능을 수행한다. 이 메서드들은 MonoBehaviour 클래스의 생명주기(Lifecycle)에 기반하여 호출되며, 이를 통해 게임 오브젝트의 동작과 상태를 제어하고 조작할 수 있다. 개발자는 이러한 메서드들을 사용하여 게임 로직, 상태 변화, 입력 처리 등을 구현할 수 있다.
- Awake : 스크립트가 활성화될 때, 오브젝트가 생성될 때 바로 호출된다. 보통 초기화 용도로 사용되며, 비활성화 상태일 때에도 호출된다.
- OnEnable : 스크립트가 활성화될 때마다 호출된다.
- Start : Awake() 메서드 호출 이후에 처음 한 번만 호출된다. 일반적으로 초기화나 설정을 위해 사용된다. 비활성화 상태일 때에는 호출되지 않는다.
- FixedUpdate() : 일정한 간격으로 호출되며, 물리 연산에 사용된다. Rigidbody와 같은 물리 컴포넌트를 조작할 때 주로 활용된다.
- Update() : 매 프레임마다 호출된다. 게임 로직 업데이트에 사용되며, 주로 플레이어 입력을 받거나 오브젝트의 상태를 변경하는 데에 활용된다.
- LateUpdate() : 모든 Update() 메서드 호출 이후에 호출된다. 다른 오브젝트나 컴포넌트의 업데이트 이후에 이루어지는 작업에 사용된다
- OnDisable() : 스크립트가 비활성화될 때 호출된다. 주로 정리(clean-up)나 리소스 해제에 사용된다.
- OnDestroy() : 오브젝트가 파괴될 때 호출된다. 주로 마무리 작업에 사용된다.
- OnCollision--- : OnCollisionEnter, OnCollisionStay, OnCollisionExit는 MonoBehaviour 클래스의 메서드로, 물리 엔진이 충돌을 감지했을 때 호출되는 콜백 함수들이다. 이 메서드들은 Collider 간의 충돌이 발생했을 때 특정 동작을 수행하기 위해 사용된다. 이러한 메서드들을 사용하여 물체 간의 충돌에 따른 특정한 동작을 수행하거나 충돌한 객체들의 상호작용을 관리할 수 있다. 이 때 Collision 객체는 충돌에 관련된 정보를 제공하며, 충돌한 물체들의 속성이나 충돌 지점 등에 대한 정보를 제공한다.
- OnTrigger --- : OnTriggerEnter, OnTriggerStay, OnTriggerExit은 MonoBehaviour 클래스의 메서드로, Collider가 트리거(trigger)로 설정되어 있을 때 다른 Collider와의 충돌이 감지될 때 호출되는 콜백 함수들이다. 이 메서드들은 물리 엔진에서 트리거로 설정된 Collider가 다른 Collider와 겹치는 순간부터 겹친 상태를 유지하고 겹침이 끝날 때까지 호출된다. 이러한 메서드들을 사용하여 트리거 영역에 들어오거나 나가는 물체를 감지하고, 이에 따른 특정한 동작을 수행할 수 있다. 트리거로 설정된 Collider는 물리적인 충돌은 감지하지 않고, 서로 겹쳤을 때에만 이벤트가 발생하여 해당 메서드들이 호출된다.