AGENT SKILL

11-ui-popup-canvas-panel

暂无简介

适用职业设计师
使用场景视觉设计
License 许可
MIT
所属仓库
devwinsoft/devian
最近更新
2026-04-12
Stars
★ 0
Forks
0

02 资源文件 1

03 SKILL.md 正文

11-ui-popup-canvas-panel — UIPopupCanvas / UIPopupPanel

Status: ACTIVE AppliesTo: v1

Purpose

popup overlay canvas와 panel layer root를 정의한다.

Implementation Location (3-path mirror)

경로 역할
framework-cs/upm/com.devian.foundation/Samples~/UIPackage/Runtime/Popup/ UPM mirror
framework-cs/apps/UnityExample/Packages/com.devian.foundation/Samples~/UIPackage/Runtime/Popup/ Packages mirror
framework-cs/apps/UnityExample/Assets/Samples/Devian Foundation/0.1.0/UIPackage/Runtime/Popup/ 현재 workspace 구현 기준

UIPopupCanvas

  • UIBaseCanvas<UIPopupCanvas>, IPoolable
  • UIPopupPanel _panel을 소유한다
  • NormalizeCanvasRect()로 full-stretch rect를 강제한다
  • bootstrap 후 Init()되어 panel을 expose한다
  • public OnPoolSpawned() / OnPoolDespawned()는 base _HandlePoolSpawned() / _HandlePoolDespawned() bridge다
  • canvas/panel은 init once를 유지하고, respawn 시 base helper가 canvas-owned component와 panel-owned subtree를 재초기화한다

UIPopupPanel

  • UIBasePanel<UIPopupCanvas>
  • UIPopupDim과 PopupRoot를 소유한다
  • manager가 spawn한 UIPopupFrameBase를 PopupRoot에 attach / detach 한다
  • AttachFrame(frame)는 frame을 PopupRoot에 붙인 뒤 아직 init 전이면 frame._Init(owner.canvas) + frame._InitComplete()를 호출한다
  • panel 아래 시각 계층은 다음을 기준으로 정리한다
Dim (UIPopupDim)
PopupRoot
  -> popup frames...

UIPopupDim

  • Dim child GameObject에 붙는 shared modal layer component
  • 같은 GameObject의 Image와 CanvasGroup를 사용한다
  • RequireComponent(typeof(Image)), RequireComponent(typeof(CanvasGroup)) 규약으로 고정한다
  • IPointerClickHandler로 dim click을 manager에 전달한다
  • Button / EventTrigger는 사용하지 않는다

Modal State

ApplyModalState(bool showDim, bool blockBehind, bool closeOnDimClick)가 담당한다.

  • dim 표시 여부
  • blocker 여부
  • dim click 허용 여부

panel은 UIPopupDim.ApplyState(...)로 위 상태를 위임한다. dim color/alpha는 prefab Image의 원본 값을 사용한다 (스크립트에서 덮어쓰지 않음). dim과 blocker는 항상 top popup frame policy 기준으로 계산한다.

Input Gate Boundary

  • shared dim/blocker는 UIPopupDim이 담당한다
  • popup 간 top-only input gate는 UIPopupFrameBase의 root CanvasGroup가 담당한다
  • UIPopupPanel은 popup별 input gate를 직접 관리하지 않는다

Editor Install

  • UIPopupPanelEditor가 Edit Mode inspector button을 제공한다
  • Install Missing은 Dim과 PopupRoot child를 생성하고 reference를 연결한다
  • Dim에는 Image, CanvasGroup, UIPopupDim을 설치한다
  • Normalize Layout는 두 child rect를 full-stretch로 다시 맞춘다

04 同仓库更多 Skills