inblog logo
|
8strength
    프로그래밍

    유니티의 라이프 사이클

    Damin Ryu's avatar
    Damin Ryu
    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

    RSS·Powered by Inblog