Files
ShrinkApp.Core/README.md
T
cneicy 5efc172bca
Publish UPM package / publish (push) Successful in 2s
Publish NuGet packages / publish (push) Successful in 3m45s
chore: align SDK dependencies and document reusable capabilities
2026-09-29 10:14:31 +08:00

49 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ShrinkApp.Core
`ShrinkApp.Core` 是 `Shrink` 系列模块的统一宿主层。它不直接替代各个基础包的独立使用方式,而是在项目需要“导入一组包后直接起盘”时,提供统一的启动链、模块安装器、服务容器和基础生命周期事件。
Godot 和普通 .NET 项目安装 `ShrinkSDK.App.Core`;可打包源码位于 `DotNet~`,其公开合同与 Unity 包共用同一份 Runtime 源码。
## 当前定位
- 统一宿主:在 `BeforeSceneLoad` 阶段创建 `ShrinkAppHost`
- 模块安装器:通过编译期注入的安装器注册表获取 `IShrinkAppModuleInstaller`
- 服务容器:各模块通过 `RegisterServices(...)` 暴露门面服务
- 生命周期事件:通过 `ShrinkEventBus` 发布 `ShrinkAppStartedEvent` / `ShrinkAppStartFailedEvent`
## 核心类型
```csharp
ShrinkApp
ShrinkAppHost
ShrinkAppSettings
ShrinkAppServices
ShrinkAppContext
IShrinkAppModuleInstaller
[ShrinkAppModuleInstaller]
```
`ShrinkAppSettings` 运行时优先从
`Resources/GameAssets/Runtime/Data/ShrinkSDK/ShrinkAppSettings.asset` 加载;旧项目的
`Resources/ShrinkAppSettings.asset` 继续作为回退。菜单 `ShrinkSDK/应用/创建设置`
会直接创建到新的标准目录。
## 启动流程
1. `ShrinkApp` 在 `RuntimeInitializeOnLoadMethod(BeforeSceneLoad)` 创建宿主。
2. 宿主从编译期注册表 `ShrinkAppGeneratedRegistry` 读取全部安装器类型。
3. 安装器按 `DependsOn + Order` 排序。
4. 先执行 `RegisterServices(...)`,再顺序执行 `InitializeAsync(...)`。
5. 启动完成后在首场景 `Start()` 阶段发布 `ShrinkAppStartedEvent`。
6. 任一安装器重复、依赖缺失、循环依赖、初始化异常都会 fail-fast。
## 可复用能力
<!-- shrink:capabilities -->
Capability: 统一宿主启动、模块安装器、服务容器与应用生命周期
Aliases: 启动 bootstrap 入口 宿主 app
Limits: 业务状态属于模块;默认采用 ContextLoader;ClassicHost 是兼容模式
Extension: ShrinkAppSettings;IShrinkAppModuleInstaller;ShrinkAppServices
Evidence: [ShrinkAppRuntime](DotNet~/Runtime/ShrinkAppCore.cs); [ShrinkAppServices](DotNet~/Runtime/ShrinkAppCore.cs)
<!-- /shrink:capabilities -->