TIL(2024,07,15)기술 면접 대비

김보근·2024년 7월 15일

Unity

목록 보기
43/113
post-thumbnail

기술 면접 대비

1. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?
2. Update의 호출주기에 영향을 주는 것은 무엇일까요?
3. FixedUpdate의 호출주기에 영향을 주는 것은 무엇일까요?
4. Awake와 Start, OnEnable의 호출 순서는 어떻게 될까요?

답변

1.Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요?

Update는 호출되지 않지만, FixedUpdate는 호출됩니다. Update는 timeScale에 영향을 받고, FixedUpdate는 실제 시간에 따라 호출됩니다.

2.Update의 호출 주기에 영향을 주는 것은 무엇일까요?

프레임 속도(framerate)에 영향을 받습니다.

3.FixedUpdate의 호출 주기에 영향을 주는 것은 무엇일까요?

Time.fixedDeltaTime에 의해 결정됩니다.

4.Awake와 Start, OnEnable의 호출 순서는 어떻게 될까요?

Awake -> OnEnable -> Start 순으로 호출됩니다.

설명문제

1. Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.
2. MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
- MonoBehaviour 클래스에서 Start와 Awake의 차이점은 무엇이며, 이를 적절히 사용하는 방법에 대해 설명해주세요.
3. Update, FixedUpdate, LateUpdate의 차이점에 대해 설명해주세요.
4. Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요.

답변

1.Unity 생명주기(Unity Life Cycle)에 대해서 설명해주세요.
Unity 생명주기는 MonoBehaviour 스크립트가 게임 오브젝트에서 어떻게 실행되는지에 대한 일련의 이벤트 순서를 말합니다. 주요 단계는 다음과 같습니다:

Awake: 스크립트 인스턴스가 로드될 때 한 번 호출됩니다. 모든 초기화 작업을 수행할 수 있으며, 오브젝트가 비활성화 상태여도 호출됩니다.
OnEnable: 오브젝트가 활성화될 때 호출됩니다.
Start: 오브젝트가 활성화된 상태에서 첫 프레임 업데이트 전에 한 번 호출됩니다. 다른 스크립트가 초기화된 후 호출됩니다.
Update: 매 프레임마다 호출됩니다.
FixedUpdate: 물리 연산을 위해 고정된 시간 간격마다 호출됩니다.
LateUpdate: 모든 Update 메소드가 호출된 후에 호출됩니다.
OnDisable: 오브젝트가 비활성화될 때 호출됩니다.
OnDestroy: 오브젝트가 삭제될 때 호출됩니다.

  1. MonoBehaviour 클래스의 주요 메서드와 그 기능에 대해 설명해주세요.
    Awake: 스크립트 인스턴스가 로드될 때 초기화 작업을 수행합니다. 모든 스크립트의 Awake가 호출된 후 Start가 호출되므로, 다른 스크립트의 초기화가 필요없는 작업을 수행할 때 유용합니다.
    Start: 스크립트가 활성화된 후 초기화 작업을 수행합니다. 다른 스크립트의 초기화가 완료된 후 호출되므로, 다른 스크립트에 의존하는 초기화 작업에 적합합니다.
    Update: 매 프레임마다 호출되어 주기적으로 실행해야 하는 작업을 수행합니다.
    FixedUpdate: 고정된 시간 간격마다 호출되어 물리 연산을 처리합니다.
    LateUpdate: 모든 Update 메소드가 호출된 후 호출되어 후처리 작업을 수행합니다.
    OnEnable: 오브젝트가 활성화될 때 호출됩니다.
    OnDisable: 오브젝트가 비활성화될 때 호출됩니다.
    OnDestroy: 오브젝트가 삭제될 때 호출됩니다.

MonoBehaviour 클래스에서 Start와 Awake의 차이점은 무엇이며, 이를 적절히 사용하는 방법에 대해 설명해주세요.
Awake는 모든 오브젝트가 로드될 때 호출되며, 다른 스크립트의 초기화와 상관없이 초기화 작업을 수행합니다.
Start는 오브젝트가 활성화된 후 첫 프레임 업데이트 전에 호출되며, 다른 스크립트의 초기화가 완료된 후에 초기화 작업을 수행할 때 사용됩니다.
적절히 사용하는 방법:
Awake: 오브젝트 간의 의존성이 없는 초기화 작업.
Start: 다른 스크립트나 오브젝트에 의존하는 초기화 작업.

  1. Update, FixedUpdate, LateUpdate의 차이점에 대해 설명해주세요.
    Update: 매 프레임마다 호출되며, 프레임 속도에 따라 호출 주기가 달라집니다. 주로 사용자 입력과 같은 비물리적 연산에 사용됩니다.
    FixedUpdate: 고정된 시간 간격마다 호출되며, 물리 연산에 사용됩니다. Time.fixedDeltaTime에 의해 호출 주기가 결정됩니다.
    LateUpdate: 모든 Update 메소드가 호출된 후에 호출됩니다. 주로 카메라 추적이나 후처리 작업에 사용됩니다.

  2. Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요.
    Time.deltaTime은 이전 프레임과 현재 프레임 사이의 시간을 나타냅니다.
    사용 이유: 게임 오브젝트의 움직임이나 애니메이션을 프레임 속도에 관계없이 일정하게 유지하기 위해 사용됩니다. 예를 들어, 프레임 속도에 따라 이동 속도가 달라지지 않도록 일정한 속도로 움직이게 하기 위해 transform.Translate(Vector3.forward speed Time.deltaTime);와 같이 사용합니다.

profile
게임개발자꿈나무

0개의 댓글