System Information Windows (시스템 정보 창)
Relevant source files
Scripts/Runtime/Debugger/DebuggerComponent.EnvironmentInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.InputAccelerationInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.InputTouchInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.QualityInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.ScreenInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.SystemInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.TimeInformationWindow.cs
Scripts/Runtime/Debugger/DebuggerComponent.WebPlayerInformationWindow.cs
System Information Windows는 UnityGameFramework 내에서 실시간으로 다양한 시스템 측면을 모니터링하고 시각화할 수 있는 특화된 디버그 인터페이스 모음입니다. 이 창들은 런타임 중 개발자가 시스템 관련 정보를 추적하고 진단할 수 있도록 설계되었으며, 디바이스 사양, 화면 속성, 시간 지표, 품질 설정, 입력 정보에 대한 통찰을 제공합니다.
일반적인 디버깅 기능은 Debugger Component를 참조하고, 성능 모니터링에 대해서는 Profiler Information을 참조하세요.
Overview (개요)
System Information Windows는 Game Framework의 중심 디버깅 허브 역할을 하는 DebuggerComponent의 일부로 구현됩니다. 각 창은 특정 범주의 시스템 정보에 집중하여 관련 데이터를 읽기 쉽고 체계적으로 보여줍니다.
Available Information Windows (사용 가능한 정보 창)
프레임워크는 여러 정보 창을 제공하며, 각각 특정 시스템 데이터 범주에 특화되어 있습니다:
Window | Purpose | Key Information |
System Information | 장치 하드웨어 세부사항 | 디바이스 ID, 프로세서, 메모리, OS |
Environment Information | 애플리케이션 및 Unity 세부사항 | 게임 버전, 프레임워크, 플랫폼 |
Screen Information | 디스플레이 속성 | 해상도, DPI, 방향, 세이프 영역 |
Quality Information | 품질 설정 | 품질 레벨, 렌더링 설정, 그림자 |
Time Information | 시간 관련 지표 | 타임 스케일, 프레임 시간, 델타 |
Input Touch Information | 터치 입력 상태 | 터치 지원 여부, 개수, 위치 |
Input Acceleration Information | 가속도계 데이터 | 디바이스 가속도, 이벤트 |
Web Player Information | 웹 관련 세부사항 | URL, 보안, 스트리밍 데이터 |
Implementation Architecture (구현 아키텍처)
각 System Information Window는 DebuggerComponent 내에서 private sealed class로 구현됩니다. 이 창들은 ScrollableDebuggerWindowBase를 상속하며, OnDrawScrollableWindow 메서드를 오버라이드하여 각각의 UI 렌더링 로직을 제공합니다.
Window Details (창 세부사항)
System Information Window (시스템 정보 창)
게임을 실행 중인 장치의 하드웨어 정보를 표시합니다.
•
디바이스 식별자 및 모델
•
프로세서 사양
•
메모리 용량
•
운영체제 정보
•
배터리 상태 (적용되는 경우)
•
하드웨어 기능 (가속도계, 자이로스코프 등)
이 창은 Unity의 SystemInfo와 Application 클래스를 통해 데이터를 가져옵니다.
Environment Information Window (환경 정보 창)
애플리케이션 및 Unity 환경에 대한 세부 정보를 보여줍니다.
•
제품 및 회사 이름
•
Game Framework 버전 및 게임 버전
•
리소스 버전 정보
•
Unity 버전
•
플랫폼 정보
•
애플리케이션 상태 (재생 중, 포커스 여부 등)
•
빌드 정보
이 창은 BaseComponent와 ResourceComponent에 접근하기 위해 초기화가 필요합니다.
Screen Information Window (화면 정보 창)
디바이스 화면 및 디스플레이 속성을 표시합니다.
•
현재 해상도
•
화면 크기 (픽셀, 인치, 센티미터)
•
DPI (인치당 점 수)
•
화면 방향
•
전체 화면 모드
•
절전 모드 타임아웃 설정
•
커서 속성
•
자동 회전 설정
•
세이프 영역 및 컷아웃
•
지원 해상도
복잡한 데이터(해상도, 컷아웃 등)를 포맷팅하는 헬퍼 메서드를 포함합니다.
Quality Information Window (품질 정보 창)
다른 정보 창과 달리 단순 표시뿐 아니라 품질 설정 변경도 지원합니다.
•
현재 품질 레벨 (선택 그리드를 통해 변경 가능)
•
렌더링 정보 (색 공간, 안티 앨리어싱 등)
•
그림자 설정
•
LOD (Level of Detail) 설정
•
텍스처 스트리밍 설정
•
기타 품질 관련 매개변수
품질 레벨 변경 시 고비용 변경을 적용할지 여부를 토글할 수 있습니다.
Time Information Window (시간 정보 창)
시간 관련 다양한 지표와 설정을 보여줍니다.
•
타임 스케일 (효과에 대한 설명 포함)
•
다양한 시간 측정값 (실시간, 게임 시간, 레벨 시간)
•
델타 타임 값 (일반, 고정, 비스케일)
•
프레임 카운트 정보
•
프레임레이트 캡처 설정
현재 타임 스케일의 효과를 설명하는 헬퍼 메서드를 포함합니다.
Input Information Windows (입력 정보 창)
Input Touch Information Window (터치 입력 정보 창)
•
터치 지원 여부
•
멀티 터치 설정
•
현재 터치 개수
•
터치 데이터 (위치, 상태 등)
Input Acceleration Information Window (가속도 입력 정보 창)
•
현재 가속도 벡터
•
가속도 이벤트 개수
•
가속도 이벤트 데이터
둘 다 배열 기반 입력 데이터를 디스플레이용으로 포맷팅하는 헬퍼 메서드를 포함합니다.
Web Player Information Window (웹 플레이어 정보 창)
웹 플레이어 빌드에 특화된 정보를 표시합니다.
•
웹 플레이어 상태
•
URL 및 주소 정보
•
스트리밍 데이터
•
웹 보안 설정
Unity 버전별 차이를 처리하기 위해 조건부 컴파일 블록을 포함합니다.
Usage Pattern (사용 패턴)
모든 System Information Windows는 공통된 구현 패턴을 따릅니다:
•
ScrollableDebuggerWindowBase 상속
•
OnDrawScrollableWindow() 오버라이드 → 창 내용 정의
•
GUILayout 메서드로 UI 요소 생성
•
라벨과 수직 박스로 콘텐츠 구조화
•
DrawItem(string name, string value)로 일관된 이름-값 레이아웃 제공
•
복잡한 데이터 형식을 포맷팅하는 헬퍼 메서드 포함
DrawItem 메서드(ScrollableDebuggerWindowBase에 정의됨)는 모든 디버그 창에서 일관된 이름-값 쌍 레이아웃을 생성합니다.
Version Compatibility (버전 호환성)
System Information Windows는 다양한 Unity 버전 차이를 처리하기 위해 조건부 컴파일 지시문을 포함합니다.
•
Web Player Information Window (Unity 2017.2 이후 큰 변경)
•
Screen Information Window (Unity 2017.2, 2018.1, 2019.2 추가사항)
•
System Information Window (Unity 5.5, 5.6 변경사항)
•
Time Information Window (Unity 5.5, 5.6, 2019.2 추가사항)
예시:
#if UNITY_5_5_OR_NEWER
DrawItem("Operating System Family", SystemInfo.operatingSystemFamily.ToString());
#endif
#if UNITY_5_6_OR_NEWER
DrawItem("Battery Status", SystemInfo.batteryStatus.ToString());
DrawItem("Battery Level", GetBatteryLevelString(SystemInfo.batteryLevel));
#endif
C#
복사
이 접근 방식은 어떤 Unity 버전을 사용하든 디버거가 올바르게 동작하도록 보장합니다.
Integration with Unity's Systems (Unity 시스템과의 통합)
System Information Windows는 Unity의 기본 시스템 및 API와 인터페이스하여 정보를 수집하고 표시합니다.
Conclusion (결론)
System Information Windows는 게임을 실행하는 시스템의 다양한 측면을 모니터링하고 검사하기 위한 포괄적인 디버깅 도구 모음을 제공합니다. 이는 하드웨어, 플랫폼, 런타임 환경과 관련된 문제를 해결하는 데 유용하며, 게임이 기본 시스템과 어떻게 상호작용하는지 이해하는 데 도움이 됩니다.
이 창들은 DebuggerComponent가 제공하는 더 광범위한 디버깅 프레임워크의 일부로, 오브젝트 풀, 레퍼런스 풀, 네트워크 활동, 게임 운영의 다른 측면을 모니터링하기 위한 추가 도구들도 포함합니다.