[Unity Introduction] #10 유니티 이벤트 함수 (Unity Event Functions) - 고박사의 유니티 노트
개발자의 편의를 위해 미리 정의해둔 이벤트 함수가 존재
사전에 정의된 순서, 특정 조건을 만족할 때 자동으로 호출됨.
호출되는 상황에 따라 분류가 나뉜다.
유니티에서 제공하는 클래스로
스크립트에 작성된 클래스를 게임오브젝트의 컴포넌트로 적용하고,
컴포넌트화 되었을 때 사용할 수 있는 여러 기능을 담고 있는 클래스
Awake() : 씬이 시작될 때 1회 호출
Start() : 첫 번째 Update() 호출 직전 1회 호출
OnEnable() : 컴포넌트가 활성화될 때 마다 1회 호출
호출 순서 : Awake -> OnEnable -> Start
데이터를 초기화하는 목적으로 만들어진 이벤트함수
현재 씬이 실행된 직후 1회 호출된다.
Awake() 메소드는 게임 오브젝트가 활성화 되어 있을 때 호출된다.
컴포넌트(Awake() 메소드가 포함되어 있는)가 비활성화 되어 있어도 호출된다.
게임 오브젝트가 비활성화 되어 있을 경우 게임 오브젝트가 활성화 되었을 떄 호출된다.
Awake() 메소드와 마찬가지고 초기화를 목적으로 만들어진 이벤트 메소드
첫 번째 프레임 업데이트가 실행되기 직전에 1회 호출된다.
Start() 메소드는 게임오브젝트, 컴포넌트가 활성화 되었을 때만 호출된다.
private IEnumerator Start() { ... }
[Tip]
LateUpdate()의 경우
플레이어 캐릭터, 카메라와 같이 서로 다른 오브젝트가 존재할 때
플레이어 캐릭터를 쫓아다니는 카메라를 구현한다면?플레이어 캐릭터가 Update()를 이용해 움직이고 난 후
카메라는 LateUpdate()에서 플레이어의 위치를 바탕으로 이동을 한다.
Edit > Project Settings > Time > Fixed Timestep
Update(), LateUpdate() 는 FPS의 영향을 받아 호출 횟수가 다르게 설정된다.
FixedUpdate()는 매 초마다 동일한 횟수만큼 호출된다.
Update(), LateUpdate()는 호출 횟수가 같고, FixedUpdate()는 다른 것을 확인할 수 있다.
게임오브젝트가 파괴될 떄 1회 호출된다.
씬이 변경되거나, 게임이 종료될 떄도 오브젝트가 파괴되기 떄문에 호출된다.
OnDestroy() 메소드는 게임 오브젝트가 활성화 되어 있을 때 호출된다.
컴포넌트가 비활성화 되어 있어도 호출된다.
게임 오브젝트가 비활성화 되어 있는 경우, 활성화 되었을 때 호출된다.
컴포넌트가 비활성화 되어 있어도 호출된다.
게임 오브젝트가 비활성화 되어 있는 경우, 활성화 되었을 때 호출된다.
[Tip]
씬이 종료될 때 모든 오브젝트 메모리를 삭제하기 때문에 OnDestroy()가 호출된다.
유니티 에디터의 씬 뷰에만 출력되는 선, 도형
게임 제작 시 광선, 충돌 범위와 같이 눈에 보이지 않는 것을 확인할 때 사용하는 이벤트 함수
OnDrawGizmos() 메소드는 게임 오브젝트가 활성화 되어 있을 때 호출된다.
컴포넌트가 비활성화 되어 있어도 호출된다.
게임 오브젝트가 비활성화 되어 있는 경우, 활성화 되었을 때 호출된다.
Gizmos() 클래스는 OnDrawGizmos() 메소드 내부에서만 제대로 작동
[Tip]
개발자 확인용으로 Scene View에만 보이고 Game View에는 보이지 않는다.
Game View 오른쪽 상단의 Gizmos를 활성화하면 보인다.