유니티의 라이프 사이클

Damin Ryu's avatar
Mar 03, 2024
유니티의 라이프 사이클

라이프 사이클 (생명 주기) : 프로그램이 만들어지고 사라지는 과정까지를 표현한 것

유니티의 라이프 사이클
 


시작 부분


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()
    {
        
    }
}

https://8strength.tistory.com/6

Share article

8strength