24.02.14 TIL - Unity : 유니티의 MonoBehaviour 클래스와 주로 사용되는 기본 메서드

JJwoo·2024년 2월 14일
post-thumbnail

Unity 게임 엔진에서 사용되는 C# 스크립트는 다양한 기본 메서드들을 제공하여 게임 개발 과정을 도와준다.

생명주기를 관리하는 메서드부터, 입력 처리, 물리 엔진과의 상호작용, 그리고 그래픽 렌더링에 이르기까지 다양한 종류가 있다.

MonoBehaviour

생명주기 관련 메서드
유니티의 모든 스크립트는 MonoBehaviour 클래스를 상속받으며,
이 클래스는 게임 오브젝트의 생명주기를 관리하는 다양한 메서드를 제공한다.

  • 게임 오브젝트에 부여할 수 있는 다양한 동작과 상호작용을 정의하는 데 사용
  • Unity에서 스크립트를 작성할 때 가장 핵심적으로 사용되는 클래스

생명 주기 (Life Cycle)

MonoBehaviour의 생명주기 메서드들은 Unity 엔진에 의해 자동으로 호출되며, 게임 오브젝트가 생성되고, 업데이트되며, 파괴되는 과정을 관리한다.


1. 생명주기 관련 메서드

Awake()

  • 게임 시작 전, 스크립트 인스턴스가 로드될 때 실행
  • 게임 오브젝트의 활성화 상태와 무관하게 호출
  • Start() 메서드보다 먼저 호출
  • 예시 : 게임 매니저의 싱글턴

Start()

  • Awake() 다음에 실행되며, 스크립트가 처음 활성화될 때 한 번만 호출
  • 초기화 작업에 주로 사용
  • 예시: 플레이어 시작 위치를 지정하거나, 시작 시 기본 아이템을 플레이어에게 부여 등

Update()

  • 프레임마다 호출되어 게임 로직을 업데이트
  • 사용자 입력 처리나 시간에 따른 변화를 관리하는 데 사용
  • 예시 : 이동, 여러가지 입력 로직 등

FixedUpdate()

  • 일정한 시간 간격으로 실행되어 주로 물리 업데이트를 처리
  • 프레임 속도의 변화에 영향을 받지 않아 물리 연산과 관련된 로직 실행에 적합 (rigid body)
  • 플레이어의 이동 속도를 일정하게 유지, 물리적 충돌 처리 등

LateUpdate()

  • 모든 Update() 메서드가 호출된 후 매 프레임마다 호출
  • 다른 오브젝트들이 이미 움직인 후 실행되므로 카메라 이동과 같은 후처리 작업에 적합

OnEnable() / OnDisable()

  • 스크립트가 활성화 / 비활성화 될 때 각각 호출
  • 게임 오브젝트의 생명주기와 밀접하게 연관
  • 리소스 할당 및 해제, 이벤트 리스너 등록 및 해제와 같은 작업을 수행

2. 입력 관련 메서드

Input 클래스

사용자의 입력을 처리
Input.GetKeyDown(), Input.GetKey(), Input.GetKeyUp() 등으로 특정 키 입력을 감지


3. 충돌 처리 관련 메서드

OnCollisionEnter(), OnCollisionExit(), OnCollisionStay()

  • 물리 충돌이 시작, 종료되거나 지속될 때 호출
  • 오브젝트가 충돌 벽(collision)에 충돌했을 때 등의 실제 반응 처리

OnTriggerEnter(), OnTriggerExit(), OnTriggerStay()

트리거(Collider의 IsTrigger 옵션이 활성화된 상태)와의 상호작용이 시작, 종료되거나 지속될 때 호출됩니다.

  • 통과 가능한 충돌 영역 처리에 사용
  • 예시 : 아이템을 획득하는 영역에 들어갔을 때 아이템을 주거나, 특정 영역을 통과하면서 원하는 로직 적용

4. GUI 관련 메서드

OnGUI()

  • IMGUI(Immediate Mode GUI) 시스템을 사용하여 그래픽 사용자 인터페이스 요소를 그리는 데 사용
  • 개발 중 디버그 정보를 화면에 표시하거나, 간단한 버튼 생성
  • 복잡한 UI 구성 or 최신 프로젝트에서는 UGUI (Unity's GUI system)를 사용하는 것을 권장
profile
개발 모코코

0개의 댓글