일상에서 멍때리기

Unity3D script lifecycle 정리 본문

프로그래밍/Unity3D

Unity3D script lifecycle 정리

로 얄 2017. 1. 26. 19:51
반응형
Unity3D wiki에 올라와있는 셈플 코드를 사용하여 실제 어떻게 함수가 호출되는지 확인을 해보았습니다.


using UnityEngine;
using System.Collections;
 
public class TestLifeCycle : MonoBehaviour
{
	void Awake()
	{
		logFrame("Awake");
	}
	void Main()
	{
		logFrame("Main");
	}
	void Start()
	{
		logFrame("Start");
	}
 
	void OnLevelWasLoaded()
	{
		logFrame("OnLevelWasLoaded");
	}
	void OnNetworkLoadedLevel()
	{
		logFrame("OnNetworkLoadedLevel");
	}
 
	void OnEnable()
	{
		logFrame("OnEnable");
	}
	void OnDisable()
	{
		logFrame("OnDisable");
	}
	void OnApplicationQuit()
	{
		logFrame("OnApplicationQuit");
	}
 
 
	void Update()
	{
		logFrame("Update");
	}
	void LateUpdate()
	{
		logFrame("LateUpdate");
	}
	void FixedUpdate()
	{
		logFrame("FixedUpdate");
	}
	void LateFixedUpdate()
	{
		logFrame("LateFixedUpdate");
	}
 
	void OnDrawGizmos()
	{
		logFrame("OnDrawGizmos");
	}
	void OnDrawGizmosSelected()
	{
		logFrame("OnDrawGizmosSelected");
	}
 
 
	static void logFrame(string message)
	{
		Debug.Log(Time.frameCount + " - " + message);
	}
}

references by http://wiki.unity3d.com/index.php?title=Life_cycle


호출 순서는 아래와 같습니다.



Awake -> OnEnable -> Main -> Start -> ( FixedUpdate -> Update -> LateUpdate )(반복 실행 구간) -> OnApplicationQuit -> OnDisable


순으로 우선 호출이 되는것으로 확인이 되었습니다.


책들을 보면 대부분 Start -> Update로 예제들이 나와있는데 실제로는 많은 다른 단계들이 있다는 것을 확인하였습니다.


하지만 각 함수가 어떤 상황에서의 호출들인지 Update함수가 3단계로 나뉘는데 어떤 상황들에서 나뉘어 불리는지에 대하여 좀 더 자세히 연구해볼 필요가 있을 것같습니다. 이부분에 대해서는 다음기회에 스터디를 한 후 다시 포스팅하도록 하겠습니다. 

반응형

'프로그래밍 > Unity3D' 카테고리의 다른 글

Unity3D의 Asset folder내의 폴더 명  (0) 2017.01.24
Comments