유니티에서 게임 오브젝트의 흐름은 크게 3가지로 구분된다.
< 시작 > : 게임 오브젝트가 생성 or 활성화
1. Awake()
- 게임 오브젝트가 생성될 때 (스크립트가 로드될 때) 1회 실행된다.
- 주로 변수 초기화 or 다른 오브젝트와의 연결 설정할 때 사용된다.
2. OnEnable()
- 게임 오브젝트가 활성화 되었을 때 1회 실행된다.
ex) 로그인
3. Start()
- 업데이트 시작 전 1회 실행된다. (다른 스크립트의 Awake 종료 시 호출)
- 주로 초기 설정이나 리소스 로딩 등에 사용된다.
< 업데이트 >
1. Update()
- 매 프레임마다 실행된다.
- 주로 게임 로직, 입력 처리, 에니메이션 업데이트 등에 사용된다.
2. LateUpdate()
- 매 프레임마다 Update()가 종료된 후 실행된다.
3. FixedUpdate()
- 1초에 약 50번 일정한 간격으로 실행된다.
- 주로 물리 업데이트를 위해 사용된다.
< 종료 >
1. OnDisable()
- 게임 오브젝트가 비활성화 되었을 때 1회 실행된다.
- 주로 오브젝트 풀링에서 재활용될 때 사용된다.
ex) 로그아웃
오브젝트 풀링: 동적으로 오브젝트 생성하고 파괴하는 작업을 최소화하기 위해 일정량의 오브젝트를 미리 생성하고 필요할 때마다 재활용하는 방식
2. OnDestroy()
- 게임 오브젝트가 삭제될 때 1회 실행된다.
- 주로 리소스 정리나 후 처리를 위해 사용된다.
< 게임 오브젝트의 흐름 예시 코드 >
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript1 : MonoBehaviour
{
void Awake() // 게임 오브젝트 생성할 때, 최초 실행
{
Debug.Log("플레이어 데이터가 준비되었습니다.");
}
void OnEnable() // 게임 오브젝트가 활성화되었을 때 실행
{
Debug.Log("플레이어가 로그인하였습니다.");
}
void Start() // 업데이트 시작 직전, 최초 실행
{
Debug.Log("사냥 장비를 챙습니다.");
}
void FixedUpdate() // 1초에 약 50번 실행 (업데이트)
{
Debug.Log("이동~");
}
void Update() // 1초에 FPS만큼 실행 (업데이트)
{
Debug.Log("몬스터 사냥");
}
void LateUpdate() // 모든 업데이트가 끝난 후 마지막에 실행 (Update 함수 뒤에 바로 실행)
{
Debug.Log("경험치 획득");
}
void OnDisable() // 게임 오브젝트가 비활성화되었을 때 실행
{
Debug.Log("플레이어가 로그아웃하였습니다.");
}
void OnDestroy() // 게임 오브젝트가 삭제될 때
{
Debug.Log("플레이어 데이터를 해제하였습니다.");
}
}
'Study > Unity Study' 카테고리의 다른 글
[Unity] 오브젝트 이동 (1) | 2023.11.10 |
---|