Releases: LiGameAcademy/godot_core_system
Releases · LiGameAcademy/godot_core_system
[0.0.4]
[0.0.4]
发行说明对应上游 main 在近期合并(含 dev 合入 #56 及后续独立 PR)。面向 Godot 4.5+ 时请注意破坏性变更。
⚠️ 破坏性变更 (Breaking)
- 日志类型重命名(#52):
Logger更名为CoreLogger,避免与引擎原生Logger类冲突。项目内所有CoreSystem.logger及类型标注需同步替换;详见仓库说明与迁移提示。
✨ 新增 (Added)
- 状态机(#14):
StateMachineManager新增transition_state_machine(id, state_id, msg),支持在未持有BaseStateMachine引用时按注册 ID 切换;未启动时等价于start_state_machine。示例见examples/state_machine/example.gd(#57)。 - 事件总线(#48):
EventBus新增subscribe_unique_script:订阅前移除同一Script上其它实例对同一事件的连接,适用于「同脚本多实例只保留最后一次订阅」。示例见examples/event_bus_demo/event_bus_demo.gd(#60)。 - 输入状态(#50):
InputState支持 边沿防抖(edge_debounce_ms/ActionState.update的debounce_ms)。新增示例:examples/input_demo/edge_debounce_issue50/(无需机械键盘即可验收;#59)。 - 存档(#51 / #53):
SaveManager与save_demo增强(含文档与场景调整),便于演示与验证。 - 合并自
dev(#56):包含但不限于——线程池与线程工具封装、存档模块重构与策略化 IO、配置管理器与自动保存相关信号、标签系统修复与命名调整、多线程/随机池/文档与示例等(详见下方「变更」与「修复」)。
🔄 变更 (Changed)
- 状态机:
StateMachineManager注册项支持run_update/run_physics/run_input驱动开关(默认全开);set_registration_drive_flags。BaseStateMachine与BaseState的切换语义整理为transition_local,与transition_to委托关系明确;弃用switch/switch_to为别名(见docs/changelogs/unreleased.md及合并说明)。 - 场景系统(#55):异步切换场景改用
load_resource,减少首次加载时 ResourceManager 相关误报。 - IO(#31 / #54):gzip 解压按 ISIZE 校验与高压比重试,提高健壮性。
- 随机:加权随机池重构与性能优化(#42 / #43)、文档与示例。
- README:随仓库更新。
🗑️ 移除 (Removed)
- (无单独列出之大规模删除;若从极旧版本升级,请以
0.0.3与本次合并说明为准。)
🛠️ 修复 (Fixed)
- 配置系统(#40 / #58):
ConfigManager.get_value在 段/键不存在 且默认值为null时,不再将null直接传给 GodotConfigFile.get_value,避免 Godot 4 报错;get_section/set_section路径一致化。 - 场景切换(#44 相关):
change_scene_async(..., push_to_stack: true)等时序下,使用remove_child.call_deferred等,避免父节点在添加/移除子节点过程中同步remove_child报错。 - 标签系统:
owner相关 bug 修复。 - 音频:循环播放无效问题修复(#29)。
- SceneManager:与
ResourceManager、场景栈相关的时序与错误处理(含 #32 等)。
相关 PR / Issue 索引(便于追溯)
| 主题 | PR / Issue |
|---|---|
dev → main 大合并 |
#56 |
状态机 transition_state_machine |
#14, #57 |
Config nil 默认 |
#40, #58 |
| Input 边沿防抖示例 | #50, #59 |
EventBus subscribe_unique_script 示例 |
#48, #60 |
场景 load_resource |
#55 |
| gzip 解压 | #31, #54 |
| 存档示例 | #51, #53 |
| CoreLogger 更名 | #52 |
本文档依据 origin/main 提交历史整理;若需与某一 tag 精确对齐,可在发布时补充「自 tag v0.0.3 起」等说明。
0.0.3
[0.0.3]
✨ 新增 (Added)
- 线程实用工具集 (
Threading Utilities):- 引入
SingleThread和ModuleThread,简化后台任务和多线程管理。 - 提供线程安全的任务提交和信号反馈。
- 引入
- 加权随机选择器 (
RandomPicker): 新增工具类,方便实现基于权重的随机选择。
🔄 变更 (Changed)
- 异步 IO 管理器 (
AsyncIOManager): 重构为更灵活的工具类 (RefCounted),不再是单例模块,解耦其使用。 - 配置系统 (
ConfigManager):- 核心重构: 切换为使用 Godot 内置的
ConfigFile进行同步读写.cfg文件,移除异步操作和AsyncIOManager依赖。 - 默认值处理: 框架不再加载硬编码默认值,
get_value需提供默认参数,reset_config清空内存并发送信号,由游戏项目负责应用默认值。 - API 简化: 利用
ConfigFile的原生类型支持简化了 API。
- 核心重构: 切换为使用 Godot 内置的
- 存档系统 (
SaveManager):- 核心重构: 采用策略模式 (Strategy Pattern),支持多种存档格式(Resource, JSON, Binary)。
- 异步: 全面使用
async/await进行文件操作。 - 功能增强: 改进了配置管理、错误处理、接口统一性,并添加了加密支持。
- 事件总线 (
EventBus): 重构为使用 Godot 内置信号系统,更符合原生习惯。 - 场景系统 (
SceneSystem): 重构以更贴近 Godot 原生的场景管理方式。 - 日志系统 (
Logger): 添加颜色标识,使日志输出更清晰。 - 开发流程: 创建
release分支用于发布,主开发流程移至dev分支。
🗑️ 移除 (Removed)
release分支不再包含test目录。- 移除了旧的、单一格式的存档系统实现。
🛠️ 修复 (Fixed)
🔒 安全 (Security)
- 为存档系统添加了文件加密支持(主要通过 Binary 策略)。
- (规划中) 添加存档数据验证机制
0.0.2: Merge pull request #26 from LiGameAcademy/dev
新增
- 新增
FrameSplitter工具类,用于将耗时操作分散到多帧执行,避免卡顿- 支持数组、范围、迭代器和自定义处理模式
- 提供进度反馈和完成信号
- 动态调整每帧处理量
- 详细的使用文档和示例
变更
- 重构
InputManager输入系统- 添加输入缓冲系统,提升游戏手感
- 集成
ConfigManager进行输入配置管理 - 添加输入重映射功能和事件通知
- 优化虚拟轴和动作处理
- 添加输入系统配置管理
- 网络输入系统改进
- 重构
SceneSystem场景系统- 更接近Godot原生场景系统的使用体验
0.0.1
更新discord链接