-
Awake()
- 가장 먼저 실행됨
GameObject가 활성화(active = true) 상태가 아니어도 실행됨DontDestroyOnLoad()설정 가능
-
OnEnable()
GameObject또는Component가 활성화될 때 실행됨Awake()이후에 실행됨
-
Start()
Awake()와OnEnable()이후 한 번 실행됨Update()가 실행되기 전에 실행됨- 다른 스크립트에서
GameObject를 참조하려면Start()에서 초기화하는 것이 좋음
- OnDisable()
GameObject또는Component가 비활성화될 때 실행됨OnEnable()의 반대 개념
-
FixedUpdate()
- 물리 연산과 관련된 업데이트 (고정된 시간 간격으로 실행됨)
Time.fixedDeltaTime주기로 실행됨- Rigidbody 관련 로직은 여기에 작성하는 것이 좋음
-
Update()
- 매 프레임마다 실행됨
- 게임 로직, 입력 처리 등을 실행
-
LateUpdate()
Update()실행 후 호출됨- 카메라 추적 등 다른 객체의 움직임을 반영한 후 실행할 로직을 넣기 좋음
- OnDestroy()
Destroy(gameObject)가 호출되면 실행됨- 씬이 변경될 때도 실행됨
- 할당된 리소스를 정리하는 데 사용됨
- OnApplicationQuit()
- 애플리케이션이 종료될 때 실행됨
- 에디터에서
Play버튼을 해제할 때도 호출됨
| 실행 시점 | 실행 함수 | 설명 |
|---|---|---|
| 객체 생성 | Awake() |
가장 먼저 실행됨 (비활성화 상태여도 실행) |
OnEnable() |
GameObject 또는 Component가 활성화될 때 실행 |
|
Start() |
OnEnable() 후 한 번 실행됨 |
|
| 매 프레임 실행 | FixedUpdate() |
고정된 시간 간격으로 실행 (물리 연산) |
Update() |
매 프레임 실행 (게임 로직) | |
LateUpdate() |
Update() 후 실행 (카메라 추적 등) |
|
| 객체 비활성화 | OnDisable() |
GameObject 또는 Component가 비활성화될 때 실행 |
| 객체 삭제 | OnDestroy() |
Destroy()가 호출되거나 씬이 변경될 때 실행 |
| 애플리케이션 종료 | OnApplicationQuit() |
애플리케이션 종료 시 실행 |
using UnityEngine;
public class MonoBehaviourExample : MonoBehaviour
{
void Awake()
{
Debug.Log("Awake 실행됨");
}
void OnEnable()
{
Debug.Log("OnEnable 실행됨");
}
void Start()
{
Debug.Log("Start 실행됨");
}
void FixedUpdate()
{
Debug.Log("FixedUpdate 실행됨");
}
void Update()
{
Debug.Log("Update 실행됨");
}
void LateUpdate()
{
Debug.Log("LateUpdate 실행됨");
}
void OnDisable()
{
Debug.Log("OnDisable 실행됨");
}
void OnDestroy()
{
Debug.Log("OnDestroy 실행됨");
}
void OnApplicationQuit()
{
Debug.Log("OnApplicationQuit 실행됨");
}
}