Unity/참고자료

Unity : 유니티 라이프사이클(가장 중요)

치명적흑형 2021. 10. 10. 17:26

https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html

 

이벤트 함수의 실행 순서 - Unity 매뉴얼

Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.

docs.unity3d.com

 


 

Script lifecycle flowchart

잘 작성 했는데 문제가 생긴다면 라이프 사이클 확인한다.


각 함수 설명

 

Awake : 항상 Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출됩니다. 

OnEnable : 오브젝트가 활성화된 경우에만 호출됩니다

씬에 추가 된 오브젝트에서 모든 스크립트는 Start, Update 등기 기타 함수가 호출되기 전에 Awake와 OnEnable 함수가 호출되는 것에 주의하십시오. 


당연히 오브젝트가 게임 플레이 중에 인스턴스화 되었을 때 강제로 호출할 수 없습니다.

Start : 스크립트의 인스턴스가 활성화되면 첫 번째 프레임의 업데이트 전에 Start가 호출됩니다.

Update : Update는 프레임마다 한 번씩 호출됩니다. 
이것은 프레임의 업데이트에 대한 주요 기능입니다.

OnDestroy : 오브젝트 생존기간의 마지막 프레임의 프레임 업데이트 후 OnDestroy가 호출됩니다 
(오브젝트는 Object.Destroy 또는 씬 종료시에 파기됩니다)

OnApplicationQuit : 이 함수는 응용 프로그램 종료 전에 모든 게임 오브젝트에서 호출됩니다. 
에디터에서는 사용자가 재생 모드를 중지하면 호출됩니다. 웹 플레이어에서는 웹 뷰가 닫힐 때 호출됩니다.

 


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

public class Test : MonoBehaviour
{
    //멤버변수, 필드, 속성
    private int count;

    private void Awake()
    {
        Debug.Log("Awake");
    }

    private void OnEnable()
    {
        Debug.Log("OnEnable");
    }
    // Start is called before the first frame update
    void Start()
    {
        int age;    //지역변수
        age = 30;
        Debug.LogFormat("age: {0}", age);   //합성서식 문자열이다, 문자열 보간 사용 가능하다.
    }

    private void OnDisable()
    {
        Debug.Log("OnDisable");
    }

    private void OnDestroy()
    {
        Debug.Log("OnDestroy");
    }
}

 

 

Awake -> OnEnable -> Start

 

 

Awake -> OnEnable -> Start -> OnDisable(오브젝트가 비활성화 되었을때)

 

 

Awake -> OnEnable -> Start -> OnDisable(오브젝트가 비활성화 되었을때) -> OnDestroy(오브젝트가 파괴 되었을때)