2. LifeCycle에 관하여 - (정리 필요)

2023. 6. 29. 17:46C# & Unity 공부

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

public class LifeCycle : MonoBehaviour
{
    //1. 초기화 영역

    void Awake()    //게임 오브젝트 생성할 때, 최초 실행
    {
        Debug.Log("플레이어 데이터가 준비되었습니다.");
    }

    //1.5. 초기화 영역와 물리 영역 사이에 있음
    void OnEnable()     //게임 오브젝트가 활성화 되었을 때, 최초 실행이 아닌 오브젝트를 키고 끄고 할때마다 실행됨
    {
        Debug.Log("플레이어가 로그인했습니다.");
    }

    void Start()    //업데이트 시작 직전, 최초 실행(초기화 영역)
    {
        Debug.Log("사냥 장비를 챙겼습니다.");
    }

    //2. 물리
    
    /*유니티 엔진이 물리 연산을 하기 전에 실행되는 업데이트 함수.
     업데이트 함수는 1초에 여러 번 (약 50회) 실행되는 함수이다. 고정적으로 꾸준히 호출함으로 cpu를 많이 사용*/

    void FixedUpdate() 
    {
        Debug.Log("이동~");
    }

    //3. 게임 로직
    
    /*물리 연산과 관련된 로직을 제외한 나머지 주기적으로 변하는 로직들을 넣을 때 사용하는 함수이다
     FixedUpdate()와 달리 환경에 따라 실행 주기가 떨어질 수 있다. 60프레임으로 작동함*/

    void Update()
    {
        Debug.Log("몬스터 사냥!!");
    }
    
    void LateUpdate()   //모든 업데이트가 끝난후 마지막으로 호출 되는 함수. 보통 캐릭터를 따라가는 카메라 혹은 로직의 후처리를 담는다. 업데이트와 실행 횟수가 같다.
    {
        Debug.Log("경험치 획득.");
    }

    //3.5 비활성화 영역

    //*모든 업데이트가 끝난 후에, 게임 오브젝트가 비활성화 되거나 삭제될 때 실행됨.
    
    void OnDisable()    //게임 오브젝트가 비활성화 되었을 때
    {
        Debug.Log("플레이어가 로그아웃했습니다.");
    }

    //4. 해체

    /*어떠한 이유로 삭제를 하게 된다면 해체의 영역으로 감.*/

    void OnDestroy()    //오브젝트가 삭제될 때 남기고 가는 것으로 생각하면 됨 (Awake()의 반대)
    {
        Debug.Log("플레이어 데이터가 해체하였습니다.");
    }
}