안녕하세요.
기계과 감성쟁이입니다.
더워죽겠네요;;;;;;;;;;;;;;;;;;;;;;
* 해당 영상을 참고했습니다.
1. 게임 오브젝트의 생명 주기 (Life Cycle)
게임 오브젝트의 생명 주기는
초기화 - (활성화) - 물리연산 - 게임로직 - (비활성화) - 해체 순으로 구성됩니다.
1) 초기화 - Awake(), Start()
2) 물리연산 - FixedUpdate()
3) 게임로직 - Update(), LateUpdate()
4) 해체 - OnDestroy()
활성화와 비활성화는 아래에서 설명합니다.
2. Awake()와 Start()
Awake() 함수는 제일 먼저, 1번 실행되는 함수이며,
모든 변수를 초기화, 즉 게임의 상태를 초기화합니다.
Start() 도 한번만 실행되는 것은 같으나,
Update() 보다 빠르지만, Awake() 보다 늦게 실행되며
스크립트가 활성화 되어 있어야합니다.
즉, Awake - Start - Update 순으로 실행됩니다.
3. Update 계열 함수
Update 계열은 3가지로 나뉘는데,
Update, FixedUpdate, LateUpdate 가 있습니다.
1) Update()
- 매 프레임마다 호출 및 실행됩니다.
물리효과를 가지고 있지 않은 메소드들을 사용할 수 있습니다.
PC환경마다 프레임이 달라지므로, 주기가 일정하지 않습니다.
2) FixedUpdate()
- Fixed Timestep 로 정해진 일정 시간마다 호출 및 실행됩니다. CPU를 많이 사용합니다.
물리연산과 관련된 것들에 주로 사용합니다. 예를 들면 Rigid body 을 움직일 때가 있겠습니다.
* Fixed Timestep 은 메뉴창의 Edit - Project Setting - Time 에서 조정할 수 있습니다.
기본 설정은 0.02로, 약 50프레임입니다.
3) LateUpdate()
- 다른 Update 계열 함수들이 모두 호출된 후, 실행됩니다.
카메라, 또는 후처리에 주로 사용합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class try2 : MonoBehaviour
{
void Awake()
{
Debug.Log("기상");
}
void Start()
{
Debug.Log("등교");
}
void FixedUpdate()
{
Debug.Log("어렵네");
}
void Update()
{
Debug.Log("졸업 어떻게 하지?");
}
void LateUpdate()
{
Debug.Log("5학년 해야겠다");
}
}
오른쪽 숫자를 통해
반복적으로 실행되는 것을 확인할 수 있습니다.
4. OnDestroy() 와 OnEnable(), OnDisable()
1) OnDestroy() 의 내부에는 오브젝트가 삭제되기 바로 직전에 실행할 것들을 넣습니다.
예를 들면, 몬스터가 죽을 때 처치되었다는 문구를 출력하거나 말이죠.
2) OnEnable() 은 게임 오브젝트를 활성화 하는 함수입니다.
예를 들면, 플레이어 로그인이 있겠습니다.
Awake와 Start 사이에 위치하며, 활성화 할 때마다 실행됩니다.
3) OnDisable() 은 게임 오브젝트를 비활성화 하는 함수입니다.
예를 들면, 플레이어 로그아웃이 있습니다.
Enable 과 Disable 은 빨간 표시 부분을 체크/해제로 사용 가능합니다.
사실상 컴포넌트의 활성화/비활성화로 작동하는 함수에요.
5. 종합
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class try2 : MonoBehaviour
{
void Awake()
{
Debug.Log("출생");
}
void OnEnable()
{
Debug.Log("기상");
}
void Start()
{
Debug.Log("등교");
}
void FixedUpdate()
{
Debug.Log("어렵네");
}
void Update()
{
Debug.Log("졸업 어떻게 하지?");
}
void LateUpdate()
{
Debug.Log("5학년 해야겠다");
}
void OnDisable()
{
Debug.Log("숙면");
}
void OnDestroy()
{
Debug.Log("자퇴");
}
}
오브젝트를 삭제함으로써,
OnDestroy의 출력까지 완료되었습니다.
습식사우나에서
하루종일 살아가는 기분입니다.
사우나 문을 열 때의 상쾌함은
에어컨 앞에서나 느낄 수 있어요.
공자가 대구에서 태어났으면
더워죽겠는데 무슨 책을 쓰냐고 했을겁니다...
여튼 화이팅