Repository navigation
本版不向后兼容。完整对照表见 README · 破坏性更新,升级前请逐项检查。
破坏性变更
- 移除 Controller 模块:实体刷新并入 Entity,
CosmosEntry.ControllerManager、IControllerManager、[TickRefresh]/[LateRefresh]/[FixedRefresh]全部删除。改用IEntityTickable/IEntityFixedTickable/IEntityLateTickable,普通 MonoBehaviour 直接用Update。 - Entity 入口变更:
ShowEntity(string, out EntityObject)改为ShowEntity<T>(entityName);新增RegisterLogicEntity<T>(无 GameObject 的逻辑实体)、PauseEntityGroup、GetEntityObject。 - 模块系统:
[Module]默认优先级改为10000(内置模块占100~1300);同一契约重复注册在启动时报错;契约解析改为确定性规则。 - 取模块语义:
GetModule<T>()未注册时抛InvalidOperationException,可选模块请用新增的TryGetModule<T>()。 - Event 改为响应式:
AddEvent/RemoveEvent/Dispatch删除,改用Subscribe(返回IDisposable)/Publish/Observe。 - 网络 awaiter 重写:删除
WaitConnectedAwaiter/WaitReceiveDataAwaiter/WaitForChannelExts,改用ConnectAsync/ReceiveDataAsync/WaitDisconnectedAsync(新增取消与超时参数)。 LimitedQueue<T>改为组合实现,不再是Queue<T>子类。(long)Fix64改为向零截断:(long)(Fix64)(-1.5)由-2变为-1,需要向下取整时先Fix64.Floor。(Fix64)转换越界饱和:超界不再回绕,NaN归一为0,±Infinity饱和到MaxValue/MinValue。AStarFix64.Clear()会清空网格(GetNode随后返回null),只想清缓冲请用ClearNodeCache()。MonoSingleton首次获取(含场景预置实例)统一调用OnInitialize与DontDestroyOnLoad。
新增
- 资源方案可插拔:
IResourceProvider契约 +SetProvider(name, settings)/RegisterProvider(name, factory),内置 Addressables / YooAsset / QuarkAsset 适配器与编辑器AssetDatabaseProvider兜底。 - 响应式基座
Runtime/Base/Reactive:Subject/ReactiveProperty/ 操作符,Observe<T>()支持Where/Select/DistinctUntilChanged。 - 模块文档体系:
Docs/MANUAL.md、MODULE.md、BOOTSTRAP.md、ENTITY.md、REACTIVE.md、RESOURCE.md、ASYNC.md。 - 工程内编译校验工具:
tools/RoslynCheck(按 asmdef 边界用 Roslyn 编译,core/runtime/editor/adapters/examples目标)。 - CI:push / PR 跑 Roslyn 编译校验与包一致性检查,打 tag 自动创建 GitHub Release(见
Docs/RELEASING.md)。
修复
QuadTree到达最大深度的满叶不再丢弃对象,Insert不再返回false(容量是分裂阈值而非硬上限)。AStarFix64与AStar的清空行为对齐。- AOI 按节点身份增删,同 X 坐标 / 同坐标的实体不再互相误删;
AOISkipList.Add返回最底层节点以便 O(1) 删除。 Circle关系判定修正:同心、包含不再被判为「相离」或「相交」。- 负值
Fix64转long、超界饱和等数值边界行为修正。
内部
- Unity 工程升级至 2021.3.45f1c2。
- 移除旧资源加载方案及其编辑器构建流水线,改为 Provider 契约。
- 代码风格统一为 CSharpier(
.config/dotnet-tools.json)。
Full changelog: https://github.com/DonnYep/CosmosFramework/blob/main/CHANGELOG.md