Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.
유니티 생명주기는 MonoBehavior 클래스의 주요 메서드들의 호출로 이루어지는데, 이 메서드들은 정해진 순서에 따라 호출된다.
MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
Awake: 스크립트가 활성화될 때 호출. 초기화에 사용.
OnEnable: 오브젝트 활성화 시 호출.
Start: 첫 번째 프레임 업데이트 전에 호출. 초기화 후 작업에 사용.
Update: 매 프레임 호출. 주로 게임 로직 처리.
FixedUpdate: 물리 계산에 사용. 일정 시간 간격으로 호출.
LateUpdate: 모든 Update 이후 호출. 카메라 추적 등에 활용.
OnDisable: 오브젝트 비활성화 시 호출.
OnDestroy: 오브젝트가 삭제될 때 호출. 리소스 정리에 사용.
- Start와 Awake의 차이점:
Awake는 씬이 로드될 때마다 모든 오브젝트에 대해 한 번만 호출되고 비활성화 상태에서도 호출됨. 다른 게임 오브젝트나 컴포넌트에 의존하지 않는 초기화 작업을 수행 (게임 오브젝트의 변수나 컴포넌트 초기화, 참조 설정 등)
Start는 오브젝트 활성화 후 첫 프레임 전에 실행되어 초기화 완료 후 작업에 적합.
Update, FixedUpdate, LateUpdate의 차이점에 대해 설명해주세요.
Update: 프레임마다 호출, 주로 게임 로직 처리.
FixedUpdate: 고정 시간 간격으로 호출, 물리 연산에 적합.
LateUpdate: Update 이후 호출, 카메라 추적 등 후처리 작업에 사용.
Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요.
Time.deltaTime은 프레임 간 시간 차이. 기기의 성능에 따라 프레임 속도가 다르더라도 동일하게 동작하기 위해 사용
코루틴의 동작원리와 사용해본 예시를 함께 설명해주세요.
작업을 다수의 프레임에 분산할 수 있다. yield return을 통해 작업을 일시 정지하고 다음 프레임에 중단한 부분부터 다시 작업을 수행할 수 있다.
MonoBehavior를 상속 받아야 사용할 수 있다.
Invoke와 코루틴의 차이에 대해 설명해주세요.
Invoke: 특정 시간 후 메서드를 호출. 간단한 지연 작업에 적합. 리플렉션을 이용
코루틴: 유연한 지연 및 비동기 작업 처리에 적합
매개변수 전달 유무 / 오브젝트 비활성화 시 동작 유무
코루틴과 멀티쓰레딩은 어떤 차이가 있는지 설명해주세요.
코루틴: 비동기적 동기
멀티쓰레딩: 병렬 작업 실행