유니티 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가 출력됩니다
.
.
.
결과
'유니티' 카테고리의 다른 글
유니티 목표지점으로 이동하기 - (Vector3) MoveTowards / SmoothDamp / Lerp / Slerp (0) | 2022.04.09 |
---|---|
유니티 오브젝트 움직이기 - Input / GetKey / GetButton / Vector3 / GetAxis (0) | 2022.04.09 |
유니티 C# 프로그래밍 기초 - 클래스 생성 및 상속 (0) | 2022.04.05 |
유니티 C# 프로그래밍 기초 - 함수 새로 선언하기 (0) | 2022.04.05 |
유니티 C# 프로그래밍 기초 - 반복문 / while / for / foreach (0) | 2022.03.30 |