View & Mode Change

Scene View와 Game View 정의

  • Scene View

    • 정의: 게임 개발자가 씬(장면)을 편집하고 조작하는 에디터 환경의 뷰

    • 목적: 게임 객체 배치, 속성 편집, 씬 구성 등 개발 과정에 사용

    • 구현 방식: GUIManager 클래스의 _isSceneView 플래그로 제어

  • Game View

    • 정의: 실제 게임이 실행될 때 플레이어가 보게 될 뷰

    • 목적: 최종 사용자 경험 테스트, 게임 동작 확인

    • 전환 방식: _isSceneView 플래그를 false로 설정하여 전환

Scene View와 Game View의 카메라 차이

  • EditorCamera (Scene View)

    • 목적: 개발자의 자유로운 씬 탐색과 편집을 위한 카메라

    • 주요 특징:

      • WASD 키로 이동, 마우스 오른쪽 버튼으로 회전

      • 에디터 전용 입력 처리 (INPUT.GetSceneButton() 사용)

      • 에디터 모드에서도 GetEditorDeltaTime()을 사용해 지속적으로 움직임

  • MainCamera (Game View)

    • 목적: 실제 게임에서 플레이어가 보게 될 시점

    • 주요 특징:

      • 게임 로직에 의해 제어됨 (스크립트 컴포넌트로 구현)

      • 게임 입력에만 반응 (INPUT.GetButton() 사용)

      • Play 모드에서만 움직임 (GetDeltaTime()이 0이 아닐 때)

Edit, Play, Pause 모드의 차이

  • Edit 모드

    • 정의: 씬을 편집하고 게임 객체를 조작하는 기본 에디터 모드

    • 특징:

      • _editScene 객체에서 작업

      • 게임 로직 실행되지 않음 (Update 메서드는 호출되지만 deltaTime은 0)

      • 씬 영구 수정 가능

      • GetDeltaTime()은 0을 반환, 게임 시뮬레이션 정지

  • Play 모드

    • 정의: 실제 게임 실행을 시뮬레이션하는 모드

    • 특징:

      • Edit 모드의 씬을 복사하여 _playScene으로 생성

      • 모든 게임 로직 정상 실행

      • 씬 변경 사항은 일시적 (Edit 모드로 돌아가면 모두 초기화)

      • GetDeltaTime()이 실제 경과 시간 반환

  • Pause 모드

    • 정의: Play 모드에서 게임 실행을 일시정지한 상태

    • 특징:

      • Play 모드의 씬 상태 유지하면서 시간만 정지

      • 게임 로직은 호출되지만 deltaTime이 0이라 진행되지 않음

      • GetDeltaTime()은 0을 반환하지만, GetEditorDeltaTime()은 계속 시간 측정

  • 모드 전환 처리 로직

시간 관리 방식

  • 두 가지 시간 측정 메커니즘

    • EditorDeltaTime: 항상 실제 경과 시간을 측정

    • DeltaTime: 모드에 따라 0 또는 실제 시간 반환

  • 모드별 시관 관리

    • Edit 모드:

      • GetDeltaTime() → 0 반환 (게임 로직 정지)

        • GetEditorDeltaTime() → 실제 시간 반환 (에디터 UI, 카메라 등은 계속 작동)

    • Play 모드:

      • GetDeltaTime() → 실제 시간 반환 (게임 정상 실행)

        • GetEditorDeltaTime() → 실제 시간 반환

    • Pause 모드:

      • GetDeltaTime() → 0 반환 (게임 로직 정지)

        • GetEditorDeltaTime() → 실제 시간 반환 (에디터 기능 계속 작동)

  • 시간 관리 코드

Last updated