본문 바로가기

유니티 3D기본(Roll A Ball)

5. 오브젝트 생명 주기(Life cycle)

게임 오브젝트의 Life Cycle은 아래와 같은 순서로 흐릅니다.

유튜브 골드메탈 유니티 입문 강좌 B5

 

우리가 입력하는 코드는 위 순서를 따라서 실행됩니다.

각각의 Life Cycle 함수들을 순서대로 나열해보면 다음과 같습니다.

 

초기화

Awake -> Start

 

활성화

OnEnable

 

물리

FixedUpdate

 

게임로직

Update -> LateUpdate

 

비활성화

OnDisable

 

해체

OnDestroy

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Cube : MonoBehaviour
{
    // Start is called before the first frame update
    void Awake()
    {
        Debug.Log("Awake 함수"); //오브젝트 생성 시 최초 1회 실행
    }

    private void OnEnable()
    {
        Debug.Log("OnEnable 함수"); //오브젝트가 활성화 될 때마다 실행
    }

    void Start()
    {
        Debug.Log("Start 함수"); //업데이트 시작 직전, 최초 1회 실행
    }

    private void FixedUpdate() 
    {
        Debug.Log("FixedUpdate 함수"); // 물리연산을 하기전에 실행되는 업데이트함수. 주로 물리연산 코드를 넣음.
                          // 컴퓨터 성능과는 상관 없이 고정된 주기로 반복실행되는 함수. CPU 부하가 높다.
    }

    // Update is called once per frame
    void Update()
    {
        Debug.Log("Update 함수"); //물리 연산에 필요한 로직을 제외한 모든 게임로직을 넣는다. 컴퓨터 성능에 따라 다른 실행 주기를 가지고 있다.
                                    //60프레임의 경우 1초에 60번 실행.
    }

    private void LateUpdate()
    {
        Debug.Log("LateUpdate 함수"); //모든 업데이트 함수가 실행이 끝난 후 실행되는 업데이트함수.
                             //보통 캐릭터를 따라가는 카메라나, 로직의 후처리를 담당
    }

    private void OnDisable()
    {
        Debug.Log("OnDisable 함수"); //오브젝트가 비 활성화 될때마다 실행되는 함수
    }

    private void OnDestroy() 
    {
        Debug.Log("OnDestroy 함수"); //오브젝트가 삭제될 때 실행되는 함수
    }

}

 

실행 결과