|
7 | 7 |
|
8 | 8 | 아직 없음. 다음에 손댈 순서는 [README 의 "다음에 할 것"](../../README.md#다음에-할-것) 을 따른다. |
9 | 9 |
|
| 10 | +## [0.3.0] - 2026-09-13 |
| 11 | + |
| 12 | +캔버스 구조를 레이어 단위에서 UI 단위로 옮기고, 대량 목록용 재사용 스크롤을 더한 판. |
| 13 | +기존 프리팹과 UIRoot 구성을 바꿔야 하므로 [README 의 이전 안내](../../README.md#설치) 를 따른다. |
| 14 | + |
| 15 | +### 추가 |
| 16 | + |
| 17 | +- **재사용 스크롤** `RecyclableScrollView` — 보이는 만큼만 셀을 만들어 돌려 쓴다. |
| 18 | + 수직·수평 리스트와 열(행) 수가 고정된 그리드, `ScrollItem<T>` · `ScrollDataSource<TData, TItem>` · `IScrollDataSource`, |
| 19 | + `ScrollToIndex` · `RefreshItem` · `Reload`, `VisibleRange` · `VisibleRangeChanged` · `CreatedCellCount`. |
| 20 | + 같은 프레임의 여러 변경은 한 번만 바인딩하고, 드래그 중 위치 이동은 손을 뗀 뒤 적용한다. |
| 21 | + 늦게 도착한 비동기 결과는 `IsCurrentBinding` 으로 버린다. 사용법은 `Documentation/RecyclableScroll.md`. |
| 22 | +- `UIStackState` — 표시·포인터 입력·가림·Dim 소유 UI 계산을 Unity 오브젝트 없이 떼어 냈다. |
| 23 | +- `UICanvasController` — UI 루트 Canvas 의 렌더 모드·배율·정렬 번호·표시·입력을 바뀐 값만 적용한다. |
| 24 | +- 에디터 메뉴 **UI System ▸ Canvas 설정 동기화** — UI·Dim 프리팹과 열린 씬의 루트 Canvas 를 공통 설정에 맞춘다. |
| 25 | +- `UIElement` 인스펙터의 **기본 설정 적용** — 스크롤은 Viewport·Content·마스크·입력 영역·서브 Canvas 를 구성한다. |
| 26 | +- EditMode · PlayMode 테스트와 리스트·그리드 스크롤 샘플. |
| 27 | + |
| 28 | +### 변경 |
| 29 | + |
| 30 | +- **UI마다 독립 루트 Canvas 를 쓴다.** UIRoot 와 레이어 그룹에는 Canvas 가 없고, 그룹에 Canvas 가 남아 있으면 그 레이어의 UI 를 열지 않는다. |
| 31 | + 역할 클래스가 `Canvas` · `CanvasScaler` · `CanvasGroup` (Toast 를 뺀 UI 는 `GraphicRaycaster` 까지) 를 요구한다. |
| 32 | +- **정렬 번호를 스택 순서로 촘촘히 다시 매긴다.** 열린 UI 하나가 레이어에서 두 칸(Dim 자리, UI 루트)을 쓰고, 닫힌 자리에 구멍이 남지 않는다. |
| 33 | + `SortingOrderAllocator` 를 받는 `UIManager` 생성자는 `[Obsolete]` 가 되었고 `UILayerSettings` 를 받는 생성자를 쓴다. |
| 34 | +- **`UIDim` 은 독립 루트 Canvas 로 고정되고 정렬 번호만 바뀐다.** 다른 UI 아래로 옮겨 다니지 않는다. |
| 35 | +- 가려진 UI 는 루트 Canvas 를 끄고, 모달 아래는 `CanvasGroup.blocksRaycasts` 로 포인터 입력만 막는다. 오브젝트는 켜진 채라 상태가 유지된다. |
| 36 | +- 공통 배율은 `UILayerSettings` 에서 관리하고 값을 바꾸면 열린 UI 와 Dim 에 다시 적용한다. `UIScreen` 은 씬의 `CanvasScaler` 를 유지하고 다르면 경고한다. |
| 37 | +- 프리팹은 꺼진 대기 영역에서 복제하고, 풀로 반납할 때는 먼저 끈 뒤 옮긴다. |
| 38 | +- `UIBootstrap` 과 `UIRootProvider` 가 서로 다른 레이어 설정을 가리키면 시작할 때 경고한다. |
| 39 | + |
| 40 | +### 수정 |
| 41 | + |
| 42 | +- 스크롤을 연 팝업에서 Dim 이 팝업보다 위에 그려지던 문제. |
| 43 | +- 레이어 캔버스 아래에서 프리팹의 Canvas 설정이 실행 중 중첩 Canvas 로 바뀌어 편집 때와 다르게 보이던 문제. |
| 44 | +- 닫기 연출이 실패해도 뷰가 스택에 남던 문제. 이제 스택에서 빠진다. |
| 45 | + |
10 | 46 | ## [0.2.0] - 2026-09-07 |
11 | 47 |
|
12 | 48 | DefenceGame 이식에서 드러난 마찰을 걷어낸 판. 실사용에서만 보이던 것들이라 API 표면이 조금 바뀐다. |
@@ -90,6 +126,7 @@ UI 스택 시스템의 기초. 스택 관리, 레이어 분리, 정렬 순서 |
90 | 126 | - `UIToast` 에 자동 소멸이 없다. 호출부가 직접 `Close` 해야 한다. |
91 | 127 | - `PlayOpenAsync` 도중 취소되면 예외는 나가지만 뷰는 스택에 남는다. |
92 | 128 |
|
93 | | -[Unreleased]: https://github.com/Frenil-client/unity-ui-system/compare/v0.2.0...HEAD |
| 129 | +[Unreleased]: https://github.com/Frenil-client/unity-ui-system/compare/v0.3.0...HEAD |
| 130 | +[0.3.0]: https://github.com/Frenil-client/unity-ui-system/compare/v0.2.0...v0.3.0 |
94 | 131 | [0.2.0]: https://github.com/Frenil-client/unity-ui-system/compare/v0.1.0...v0.2.0 |
95 | 132 | [0.1.0]: https://github.com/Frenil-client/unity-ui-system/releases/tag/v0.1.0 |
0 commit comments