라이프 사이클 (생명 주기) : 프로그램이 만들어지고 사라지는 과정까지를 표현한 것
유니티의 라이프 사이클
시작 부분
Reset : 인스펙터 뷰에서 리셋 기능을 눌렀을 때 실행되는 영역, 초기 값 설정
Awake : Start를 진행하기 전에 한번 호출되는 영역
주로 GameObject.Find()같은 명령문들을 사용하는 영역
OnEnable : 인스펙터 뷰에서 체크를 통해서 게임 오브젝트를 활성화할 때 실행되는 영역
★Start : Update 전에 한 번 호출되는 영역, 시작 시에 할 작업을 적어주는 영역.
중간 부분 : 이벤트 영역
FixedUpdate : 디테일한 값 설정을 위해 일정 시간 간격으로 물리 엔진을 사용하는 영역.
사용 이유 : Update 영역은 프레임 단위이기 때문에 컴퓨터 성능에 따라 변화가 심할 수 있음. (업데이트 주기 시간이 정해져 있음)
게임 수학 등을 익혀서 특정 프로그램 작업에 대한 로직 등을 짤 때 사용됨.
onTriggerXXX (OnTriggerEnter, OnTrigger...) : onTrigger라고 이름 붙는 6종류의 함수는 오브젝트 간의 충돌 상황에서 작업이 진행되는 영역
1. onTriggerEnter, onTriggerEnter2D : 오브젝트 간의 충돌 시 호출
2. onTriggerStay, onTriggerStay2D : 오브젝트가 충돌하고 있는 동안 매 프레임마다 호출되는 영역
3. onTriggerExit, onTriggerExit2D : 오브젝트가 충돌에서 벗어났을 때 호출되는 영역
★onCollisionXXX : onCollision이라고 이름 붙는 6종류의 함수는 물리 법칙에 의한 영향 발생 시 호출되는 영역
Rigidbody(중력을 부여하는 기능)에서 Body Type이 하나라도 Dynamic으로 설정되어 있을 경우 처리되는 영역
프레임 부분 (프레임당 실행되는 부분)
★Update : 프레임마다 호출되는 함수 (주로 게임 핵심 로직을 이 영역에서 구현). 다만 프레임 주기가 상대적으로 일정하지 않을 수 있음(이를 맞춰주기 위해 FixedUpdate에서 작업)
LateUpdate : Update 함수가 실행되고 나서 호출되는 영역 (주로 카메라 이동 담당)
소멸 부분
OnDisable : OnEnable의 반대. 오브젝터, 스크립트가 비활성화될 때 호출되는 영역
☆OnDestroy : 오브젝트가 파괴 또는 제거되는 시기에 실행되는 영역. 주로 물건의 파괴, 장애물 구현 등에서 활용.
OnApplicationQuit : 응용 프로그램 종료 전에 호출되는 영역. 잘 안씀. 굳이 쓴다면 세이브 기능?
LifeCycle.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LifeCycleExample : MonoBehaviour
{
// 라이프 사이클 (생명 주기) : 프로그램이 만들어지고 사라지는 과정까지를 표현한 것
/* 유니티의 라이프 사이클
*
* 시작 부분
* Reset : 인스펙터 뷰에서 리셋 기능을 눌렀을 때 실행되는 영역, 초기 값 설정
* Awake : Start를 진행하기 전에 한번 호출되는 영역
* 주로 GameObject.Find()같은 명령문들을 사용하는 영역
* OnEnable : 인스펙터 뷰에서 체크를 통해서 게임 오브젝트를 활성화할 때 실행되는 영역
* ★Start : Update 전에 한 번 호출되는 영역, 시작 시에 할 작업을 적어주는 영역.
*
* 중간 부분 : 이벤트 영역
* FixedUpdate : 디테일한 값 설정을 위해 일정 시간 간격으로 물리 엔진을 사용하는 영역.
* 사용 이유 : Update 영역은 프레임 단위이기 때문에 컴퓨터 성능에 따라 변화가 심할 수 있음. (업데이트 주기 시간이 정해져 있음)
* 게임 수학 등을 익혀서 특정 프로그램 작업에 대한 로직 등을 짤 때 사용됨.
* onTriggerXXX (OnTriggerEnter, OnTrigger...) : onTrigger라고 이름 붙는 6종류의 함수는 오브젝트 간의 충돌 상황에서 작업이 진행되는 영역
* 1. onTriggerEnter, onTriggerEnter2D : 오브젝트 간의 충돌 시 호출
* 2. onTriggerStay, onTriggerStay2D : 오브젝트가 충돌하고 있는 동안 매 프레임마다 호출되는 영역
* 3. onTriggerExit, onTriggerExit2D : 오브젝트가 충돌에서 벗어났을 때 호출되는 영역
* ★onCollisionXXX : onCollision이라고 이름 붙는 6종류의 함수는 물리 법칙에 의한 영향 발생 시 호출되는 영역
* Rigidbody(중력을 부여하는 기능)에서 Body Type이 하나라도 Dynamic으로 설정되어 있을 경우 처리되는 영역
*
* 프레임 부분 (프레임당 실행되는 부분)
* ★Update : 프레임마다 호출되는 함수 (주로 게임 핵심 로직을 이 영역에서 구현). 다만 프레임 주기가 상대적으로 일정하지 않을 수 있음(이를 맞춰주기 위해 FixedUpdate에서 작업)
* LateUpdate : Update 함수가 실행되고 나서 호출되는 영역 (주로 카메라 이동 담당)
*
* 소멸 부분
* OnDisable : OnEnable의 반대. 오브젝터, 스크립트가 비활성화될 때 호출되는 영역
* ☆OnDestroy : 오브젝트가 파괴 또는 제거되는 시기에 실행되는 영역. 주로 물건의 파괴, 장애물 구현 등에서 활용.
* OnApplicationQuit : 응용 프로그램 종료 전에 호출되는 영역. 잘 안씀. 굳이 쓴다면 세이브 기능?
*/
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}