하나의 프레임에서 이루어지는 생명주기를 다루고 있다.
유니티 생명주기에서 가장 첫번째로 실행되는 구간은 초기화영역. 그 중에서도 가장 빨리 실행되는 함수는 Awake()함수이다.
게임 오브젝트 생성할 때, 최초 실행. (딱 한번만 실행)
void Awake()
{
Debug.Log("플레이어 데이터가 준비되었습니다.")
}

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

물리 연산 업데이트
void FixedUpdate()
{
Debug.Log("이동~");
}

게임 로직 업데이트
void Update()
{
Debug.Log("몬스터 사냥!!");
}

환경에 따라서라고 했기 때문에 
사진과 같이 실행되는 횟수의 차이가 존재하지만 컴퓨터에 따라 이 차이가 더 커질수도 작아질수도 있다.
모든 업데이트 로직들이 끝난 후 호출되는 함수로써 보통 캐릭터를 따라가는 카메라, 로직의 후 처리들이 들어간다.
void LateUpdate()
{
Debug.Log("경험치 획득.");
}

이 사진을 보면 Update()함수와 LateUpdate()가 동일한 횟수만큼 실행되는 것을 볼 수 있는데 그 이유는 Update()와 LateUpdate()는 모두 매 프레임마다 호출되기 때문에, 프레임 수에 비례해서 호출 횟수도 동일하다.
다만 실행 순서가 보장되기 때문에, Update()에서 상태를 갱신하고, 그 결과를 바탕으로 LateUpdate()에서 추가 작업을 수행하는 구조로 동작합니다.
게임 오브젝트가 삭제될 때 호출되며, 주로 자원 정리와 이벤트 해제 등에 사용된다.
void OnDestroy()
{
Debug.Log("플레이어 데이터를 해제하였습니다..");
}
그러나 이렇게 코드를 작성하더라도 유니티 콘솔창에는 나오지 않는다.
Hierachy에서 해당하는 오브젝트를 삭제하면 그제서야 콘솔창에 출력되게 된다.

게임 오브젝트는 켜고 끌수 있다. 이것을 활성화, 비활성화라고 한다.
최초 1회 실행이 아닌 켜고 끄고 할때마다 실행이 된다.
void OnEnable()
{
Debug.Log("플레이어가 로그인했습니다.");
}
호출하는 시점은 모든 업데이트가 다 끝나고 오브젝트가 비활성화되거나 삭제될때 실행된다.
void OnDisable()
{
Debug.Log("플레이어가 로그아웃했습니다.");
}
전체적인 코드는
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LifeCycle : MonoBehaviour
{
void Awake()
{
Debug.Log("플레이어 데이터가 준비되었습니다.");
}
void OnEnable()
{
Debug.Log("플레이어가 로그인했습니다.");
}
void Start()
{
Debug.Log("사냥 장비를 챙겼습니다.");
}
void FixedUpdate()
{
Debug.Log("이동~");
}
void Update()
{
Debug.Log("몬스터 사냥!!");
}
void LateUpdate()
{
Debug.Log("경험치 획득.");
}
void OnDisable()
{
Debug.Log("플레이어가 로그아웃했습니다.");
}
void OnDestroy()
{
Debug.Log("플레이어 데이터를 해제하였습니다..");
}
}
이렇게 되어있고 실행을 시키면 아래와 같은 출력이 콘솔에 찍히게 되고

그 오브젝트를 비활성화 하면 아래와 같은 출력이 콘솔에 찍히게 된다.

다시 활성화를 하게 되면

위와 같이 최초 실행시 한번만 실행되는 Awake()와 Start()를 제외한 OnEnable(), FixedUpdate(), Update(), LateUpdate() 함수만이 실행되는 것을 볼 수 있다.
마지막으로 생명주기에 대한 것을 하나의 사진으로 보자면

이렇게 생긴 모양이라고 알 수 있다.
출처 : https://www.youtube.com/watch?v=PyN3JkPTpAI&list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&index=7