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