유니티

유니티 이벤트 함수의 실행 순서

nock_ji 2022. 4. 6. 23:39

유니티 C# 프로그래밍 기초

 

 

[ 유니티 게임 오브젝트 흐름 ] & [ 이벤트 함수 실행 순서 ]

 

 


유니티 게임 오브젝트의 흐름 

 

 

( 초기화 ) -> ( 활성화 ) -> ( 물리 ) -> ( 게임 로직 ) -> ( 비활성화 ) -> ( 해제 ) 

 

 흐름 영역 함수
초기화 최초 Awake()
활성화   OnEnable()
초기화 프레임 시작 Start()
프레임 물리 FixedUpdate()
로직 Update()
후처리 LateUpdate()
비활성화   OnDisable()
해제   OnDestroy()

 

 


1.  초기화  -  최초

 

Awake()

게임 오브젝트 생성할 때 최초 실행됩니다

Start 함수의 이전에 호출됩니다

.

.

.

결과

 


 

2.  활성화

 

 

OnEnable()

 

오브젝트가 활성화 된 경우에만 호출됩니다. 게임오브젝트는 삭제하지 않고도 끄고 킬 수 있습니다

Awake와 같이 최초 1회 실행이 아니라, 끄고 켜고 할 때마다 실행이 됩니다 

 

 

Awake와 Start 함수 사이에 위치합니다. 

.

.

.

결과 

 


 

3.  초기화  -  프레임 시작

 

 

Start()

업데이트 시작 직전, 최초 실행

 

void Start()
{
	Debug.Log("사냥 장비를 챙겼습니다");
}

 

Awake와 Start는 최초 실행하는 함수로, 1회만 실행됩니다

.

.

.

결과

 


 

4. 프레임 - 물리 

 

 

FixedUpdate()

물리 연산 업데이트 함수

 

 

자주 호출되는 함수로, 프레임 속도가 낮은 경우에는 프레임마다 여러 번 호출 가능하지만, 프레임 속도가 높을 경우 프레임 간에 호출을 할 수 없습니다. 

 

void FixedUpdate()
{
	Debug.Log("이동~");
}

 

 

고정된 실행주기로 CPU를 많이 사용합니다

메시지를 프레임대로 호출하고, 1초에 약 50회 정도 됩니다

 


 

5. 프레임 - 로직

 

 

Update()

게임 로직 업데이트 함수

 

 

 

프레임 마다 한 번씩 호출됩니다 

 

void Update()
{
	Debug.Log("몬스터 사냥 !!");
}

 

물리연산을 제외하고 주기적으로 변하는 로직을 넣을 때 사용하는 함수입니다.

FixedUpdate와 다르게 환경에 따라 실행 주기가 떨어질 수도 있습니다. 

.

.

.

결과

 


 

6. 프레임 - 후처리

 

 

 

LateUpdate()

모든 업데이트가 끝난 후 마지막으로 사용하는 함수

 

 

 

LateUpdate는 Update 로직 이후 프레임마다 한 번씩 호출됩니다

 

void LateUpdate()
{
	Debug.Log("경험치 획득");
}

 

캐릭터를 따라가는 카메라, 후처리 등에서 사용합니다

.

.

.

결과

 


 

7. 비활성화

 

 

 

OnDisable()

게임 오브젝트가 비활성화 되었을 때 

 

 

 

void OnDisable()
{
	Debug.Log("플레이어가 로그아웃했습니다");
}

 

게임 로직 이후에 실행합니다

.

.

.

결과 

 


 

8. 해제 

 

 

 

OnDestroy()

게임 오브젝트가 삭제될 때 

 

 

 

void OnDestroy()
{
	Debug.Log("플레이어 데이터를 해제하였습니다");
}

 

게임 오브젝트를 생성하는 Awake와 반대 특성을 가집니다.

.

.

 

플레이 중에 해당 스크립트를 가지고 있는 오브젝트를 삭제하면, OnDestroy가 출력됩니다

.

.

.

결과