Unity 이벤트 함수

HanJaeHoon·2024년 2월 2일
post-thumbnail

이벤트 함수란?


Unity의 이벤트 함수(Event Functions)는 특정한 시점이나 조건에서 호출되는 메서드로, Unity의 생명주기나 다양한 상황에서 사용자가 정의한 코드를 실행할 수 있도록 하는 중요한 개념입니다. 이러한 이벤트 함수들은 MonoBehaviour 클래스에서 파생된 스크립트에서 사용됩니다.

일반적으로, Unity에서 실행되는 게임 오브젝트의 생명주기에 따라 특정한 이벤트 함수가 호출됩니다.

초기화 함수


Awake()

Awake 함수는 스크립트가 활성화되어 있는 게임 오브젝트가 인스턴스화될 때 호출됩니다. 초기화 작업이 필요한 경우 사용됩니다.

OnEnable()

OnEnable 함수는 스크립트가 활성화 될 때마다 호출되고 주로 활성화 및 비활성화 시에 수행되어야 하는 작업을 주로 처리합니다.

Start()

Start 함수는 스크립트가 활성화된 후 첫 프레임에서 호출됩니다. 일반적으로 초기화와 관련된 작업을 수행합니다.

초기화 함수 호출 순서

Awake() -> OnEnable() -> Start()

  • Awake()는 게임 오브젝트가 인스턴스화되면서 호출되고, OnEnable()은 스크립트가 활성화될 때 호출됩니다. Start()는 Awake 이후에 호출되며, 초기화 작업이 완료된 후 추가적인 설정이 필요한 경우에 사용됩니다.

업데이트 함수


Update()

Update 함수는 매 프레임마다 호출되며, 게임의 주된 로직이나 입력 처리 등을 업데이트하는 데 사용됩니다.

FixedUpdate()

FixedUpdate 함수는 물리 엔진 업데이트 주기에 맞추어 호출됩니다. 물리 관련 작업은 이 함수에서 처리하는 것이 좋습니다.

LateUpdate()

LateUpdate 함수는 모든 업데이트가 완료된 후에 호출되며, 보통 카메라 이동이나 타겟을 추적하는 데 사용됩니다.

업데이트 함수 호출 순서

FixedUpdate() -> Update() -> LateUpdate()

충돌 이벤트 함수


OnCollision(물리적 충돌) 함수

Collision은 주로 물리적 상호작용을 다루기 위해 사용됩니다. Rigidbody가 있는 게임 오브젝트끼리 물리 엔진에 의해 서로 밀리거나 튕기는 등의 물리적인 효과를 주고 싶을 때 활용됩니다.

충돌 이벤트 함수(OnCollisionEnter, OnCollisionStay, OnCollisionExit)는 두 개의 Collider가 서로 겹쳤을 때 호출됩니다. 두 게임 오브젝트 간에 물리적인 충돌이 발생하면 호출됩니다.

충돌 이벤트 함수는 물리 시스템에 의해 결정되므로 Rigidbody가 있는 경우에만 호출됩니다.

다음은 OnCollision 함수의 종류입니다.

  • OnCollisionEnter(Collision collision) : 두 Collider가 충돌했을 때 호출되는 함수입니다. 충돌 정보를 제공하는 Collision 객체를 매개변수로 받습니다.

  • OnCollisionStay(Collision collision) : Collider가 계속 충돌 중일 때 호출되는 함수입니다. 충돌 정보를 제공하는 Collision 객체를 매개변수로 받습니다.

  • OnCollisionExit(Collision collision) : Collider가 충돌에서 벗어날 때 호출되는 함수입니다. 충돌 정보를 제공하는 Collision 객체를 매개변수로 받습니다.

OnTrigger(비 물리적 충돌) 함수

Trigger는 주로 물리적인 상호작용이 아닌, 특정 지점에 진입하거나 빠져나갈 때의 이벤트 처리에 사용됩니다.

트리거 이벤트 함수(OnTriggerEnter, OnTriggerStay, OnTriggerExit)는 Rigidbody가 없어도 작동하며, Collider 간의 진입 또는 이탈 상황에서 호출됩니다.

트리거는 Collider의 isTrigger 속성을 true로 설정하여 만들어집니다. Collider가 트리거로 설정되면 물리적인 영향을 주지 않고도 트리거 이벤트를 처리할 수 있습니다.

  • OnTriggerEnter(Collider other) : 트리거와 다른 Collider가 충돌했을 때 호출되는 함수입니다. 충돌 정보를 제공하는 Collider 객체를 매개변수로 받습니다.

  • OnTriggerStay(Collider other) : 트리거와 다른 Collider가 계속 충돌 중일 때 호출되는 함수입니다. 충돌 정보를 제공하는 Collider 객체를 매개변수로 받습니다.

  • OnTriggerExit(Collider other) : 트리거와 다른 Collider와의 충돌이 끝났을 때 호출되는 함수입니다. 충돌 정보를 제공하는 Collider 객체를 매개변수로 받습니다.

너무 어렵다면 슈퍼마리오 게임을 생각하시면 됩니다. 마리오 게임에서 코인과 아이템 박스를 예로 들어 설명하자면 코인은 물리적인 충돌을 생각하지 않고 마리오가 코인에 닿였을때 사라지며, 마리오가 이동하는데 전혀 영향을 주지 않습니다. 반면에 마리오가 점프하여 아이템 박스를 때리면 마리오의 점프는 물리적인 충돌로 인해 막히게 됩니다. 이때 코인은 Trigger를 사용하고 아이템 박스는 Collion을 사용했다고 생각하시면 됩니다.

profile
게임 개발자

0개의 댓글