Company
교육 철학

UI 및 엔티티 시스템

UI 및 엔티티 시스템

관련 소스 파일
Scripts/Runtime/Base/GameEntry.cs
Scripts/Runtime/Entity/Entity.cs
Scripts/Runtime/Entity/EntityComponent.cs
Scripts/Runtime/Entity/EntityLogic.cs
Scripts/Runtime/Scene/SceneComponent.cs
Scripts/Runtime/Sound/SoundComponent.cs
Scripts/Runtime/UI/UIComponent.cs
Scripts/Runtime/UI/UIForm.cs
Scripts/Runtime/UI/UIFormLogic.cs
이 문서는 Game Framework의 UI 및 엔티티 시스템에 대한 개요를 제공하며, 그 아키텍처, 구성 요소, 그리고 두 시스템이 서로 어떻게 상호작용하는지를 설명합니다. 이 두 가지 핵심 시스템은 각각 시각적 인터페이스와 게임 오브젝트를 처리하며, 플레이어가 보고 상호작용하는 것들의 기반을 형성합니다.
두 시스템이 모두 의존하는 리소스 관리 시스템에 대한 정보는 Resource Management System을 참조하십시오.

시스템 아키텍처 개요

UI와 엔티티 시스템은 서로 다른 목적을 가지고 있지만 구현 패턴은 유사합니다. 두 시스템 모두 데이터 매니저와 로직 핸들러 간의 명확한 분리를 갖춘 컴포넌트 기반 아키텍처를 사용합니다.
출처:
Scripts/Runtime/Base/GameEntry.cs 32-57
Scripts/Runtime/UI/UIComponent.cs 16-22
Scripts/Runtime/Entity/EntityComponent.cs 16-23
Scripts/Runtime/Scene/SceneComponent.cs 16-23

공통 아키텍처 패턴

UI 및 엔티티 시스템은 모두 다음과 같은 유사한 아키텍처 패턴을 따릅니다:
공개 API를 제공하는 컴포넌트 클래스 (예: UIComponent, EntityComponent)
기본 로직을 처리하는 매니저 인터페이스 (예: IUIManager, IEntityManager)
Unity의 GameObject와 연결되는 GameObject 래퍼 (예: UIForm, Entity)
동작을 정의하는 로직 베이스 클래스 (예: UIFormLogic, EntityLogic)
출처:
Scripts/Runtime/UI/UIComponent.cs 22-23
Scripts/Runtime/Entity/EntityComponent.cs 22-24
Scripts/Runtime/UI/UIForm.cs 17-18
Scripts/Runtime/Entity/Entity.cs 18-19
Scripts/Runtime/UI/UIFormLogic.cs 15-16
Scripts/Runtime/Entity/EntityLogic.cs 15-16

UI 시스템

UI 시스템은 사용자 인터페이스를 생성, 관리, 표시하는 구조화된 접근 방식을 제공합니다. UI 요소를 그룹으로 조직하고 깊이(depth) 제어를 하며, UI 생명주기를 관리합니다.

핵심 구성 요소

출처:
Scripts/Runtime/UI/UIComponent.cs 147-182
Scripts/Runtime/UI/UIFormLogic.cs 102-205
Scripts/Runtime/UI/UIForm.cs 112-303

UI Component

UIComponent는 UI 작업을 위한 주요 진입점 역할을 합니다. UI 그룹을 관리하고 UI 폼을 열고 닫는 메서드를 제공합니다.
주요 기능:
성능 향상을 위한 UI 폼 인스턴스 풀링
깊이 제어가 있는 UI 그룹 관리
리소스로부터 UI 폼 로딩
UI 폼 생명주기 관리
출처:
Scripts/Runtime/UI/UIComponent.cs 489-585
Scripts/Runtime/UI/UIComponent.cs 292-323

UIForm 및 UIFormLogic

UIForm은 UI GameObject에 부착되는 Unity 컴포넌트이고, UIFormLogic은 UI 동작을 구현하기 위한 베이스 클래스를 제공합니다.
주요 UIFormLogic 기능:
가시성 제어
생명주기 콜백
UI 상태 관리
상태 변화
설명
발생 시점
OnOpen
UI 초기화 및 표시
UI 폼이 열릴 때
OnClose
정리 및 숨김
UI 폼이 닫힐 때
OnPause
UI 활동 일시 중지
다른 UI에 의해 가려질 때
OnResume
UI 활동 재개
가려진 후 다시 드러날 때
OnCover
UI가 덮임
다른 UI가 위에 나타날 때
OnReveal
UI가 더 이상 덮이지 않음
위 UI가 제거될 때
OnRefocus
UI가 다시 활성화됨
UI가 맨 앞으로 올 때
출처:
Scripts/Runtime/UI/UIFormLogic.cs 102-205
Scripts/Runtime/UI/UIForm.cs 112-303

엔티티 시스템

엔티티 시스템은 게임 월드에 존재하는 게임 오브젝트를 관리합니다. 부모-자식 관계를 포함하여 엔티티 생성, 표시, 관리 메커니즘을 제공합니다.

핵심 구성 요소

출처:
Scripts/Runtime/Entity/EntityComponent.cs 77-164
Scripts/Runtime/Entity/EntityLogic.cs 103-201
Scripts/Runtime/Entity/Entity.cs 88-278

Entity Component

EntityComponent는 엔티티를 관리하는 주요 컴포넌트입니다. 엔티티를 표시/숨기는 메서드와 그룹 및 부모-자식 관계를 관리합니다.
주요 기능:
성능 향상을 위한 엔티티 인스턴스 풀링
엔티티 그룹 관리
리소스로부터 엔티티 프리팹 로딩
엔티티 생명주기 관리
부모-자식 관계 관리
출처:
Scripts/Runtime/Entity/EntityComponent.cs 390-495
Scripts/Runtime/Entity/EntityComponent.cs 205-233

Entity 및 EntityLogic

Entity는 엔티티 GameObject에 부착되는 Unity 컴포넌트이며, EntityLogic은 엔티티 동작을 구현하기 위한 베이스 클래스를 제공합니다.
주요 EntityLogic 기능:
가시성 제어
생명주기 콜백
엔티티 상태 관리
부모-자식 관계 처리
상태 변화
설명
발생 시점
OnShow
엔티티 초기화 및 표시
엔티티가 표시될 때
OnHide
정리 및 숨김
엔티티가 숨겨질 때
OnAttached
자식 엔티티 부착됨
이 엔티티에 자식이 부착될 때
OnDetached
자식 엔티티 분리됨
이 엔티티에서 자식이 분리될 때
OnAttachTo
부모 엔티티에 부착됨
이 엔티티가 부모에 부착될 때
OnDetachFrom
부모 엔티티에서 분리됨
이 엔티티가 부모에서 분리될 때
출처:
Scripts/Runtime/Entity/EntityLogic.cs 103-201
Scripts/Runtime/Entity/Entity.cs 88-278
Scripts/Runtime/Entity/EntityComponent.cs 560-1369

씬 시스템 및 통합

SceneComponent는 씬 로딩 및 전환을 관리하며, 이는 UI 및 엔티티 시스템 모두에 영향을 줍니다. 씬을 로드, 언로드, 관리할 수 있으며 적절한 이벤트 처리를 제공합니다.
출처:
Scripts/Runtime/Scene/SceneComponent.cs 252-299
Scripts/Runtime/Scene/SceneComponent.cs 304-331
Scripts/Runtime/Scene/SceneComponent.cs 437-475

생명주기 비교

UI 및 엔티티 시스템은 유사한 생명주기를 가지지만, 각 목적에 맞는 다른 용어를 사용합니다:
UI 시스템
엔티티 시스템
목적
OnInit
OnInit
컴포넌트 초기화
OnOpen
OnShow
사용자에게 표시
OnClose
OnHide
화면에서 제거
OnPause / OnResume
N/A
UI 전용 상태 (레이어링)
OnCover / OnReveal
N/A
UI 전용 상태 (레이어링)
N/A
OnAttached / OnDetached
엔티티 전용 계층 처리
OnUpdate
OnUpdate
정기 업데이트 로직
OnRecycle
OnRecycle
오브젝트 풀링을 통한 재사용 준비
출처:
Scripts/Runtime/UI/UIFormLogic.cs 102-205
Scripts/Runtime/Entity/EntityLogic.cs 103-201

사용 통합

UI 및 엔티티 시스템은 자주 함께 작동합니다. 예를 들어, UI는 엔티티를 참조할 수 있고 (예: 플레이어 엔티티를 참조하는 캐릭터 스탯 UI), 엔티티는 UI를 트리거할 수 있습니다 (예: NPC 엔티티가 대화 UI를 여는 경우).
출처:
Scripts/Runtime/Entity/EntityComponent.cs 374-386
Scripts/Runtime/UI/UIComponent.cs 582-585
Scripts/Runtime/Sound/SoundComponent.cs 373-379

요약

UI 및 엔티티 시스템은 사용자 인터페이스와 게임 엔티티를 관리하기 위한 포괄적인 프레임워크를 형성하며, 주요 기능은 다음과 같습니다:
관심사의 명확한 분리를 갖춘 컴포넌트 기반 아키텍처
UI 폼 및 엔티티 모두에 대한 생명주기 관리
조직화를 위한 그룹화 기능
성능 최적화를 위한 오브젝트 풀링
엔티티의 부모-자식 관계 지원
UI 깊이 관리로 적절한 레이어링 제공
원활한 전환을 위한 씬 시스템 통합
이 시스템들을 통해 구조적이고 유지보수 가능한 방식으로 게임 인터페이스를 구축하고 게임 월드를 채울 수 있는 견고한 기반을 제공합니다.
출처:
Scripts/Runtime/UI/UIComponent.cs
Scripts/Runtime/Entity/EntityComponent.cs
Scripts/Runtime/UI/UIFormLogic.cs
Scripts/Runtime/Entity/EntityLogic.cs
Scripts/Runtime/Scene/SceneComponent.cs