Chill Env Sync
实时天气同步插件,可以根据真实世界的天气情况自动调整游戏内的环境效果,或基于现实时间模拟昼夜循环。
CHANGELOG
注:版本号为 AI 自己写的,不关我的事,我也不知道为啥它刷版本号为什么这么随意
从 v5.2.0 起版本集中管理于
ChillEnvPlugin.PluginVersion,不再散落在各个文件中。
v5.2.3-新天气
- 新增 OpenMeteo 天气数据源:可在「心知天气」和「OpenMeteo」间自由切换
- 心知天气:填写城市名即可
- OpenMeteo:无需 API Key,填写经纬度即可
- 切换数据源后自动刷新天气
- 设置面板优化:切换数据源后,对应的配置项自动显示或隐藏(需 iGPU Savior Mod)
- 日出日落同步改进:遇到网络波动时会自动重试,不会再因一次失败就跳过一整天
- 日志优化:天气和日出日落日志会标明数据源,方便排查问题
v5.2.2-快速启动
-
修复降水窗景关闭后音频与设置开关仍保持开启的问题
-
持久化自动托管归属,支持跨会话安全清理 Mod 开启的环境音
-
控制器内部依赖暂未初始化时静默等待,避免启动及切换期间空引用刷屏
-
增加启动构建标识,便于确认游戏实际加载的 DLL
-
修复启动时会保留上次退出前的时间与降水,直到主角坐下后才同步的问题
- 启动阶段改用已注入的环境运行时服务直接应用并验证状态,不再等待
Idle - 在环境按钮完成
Setup前即可关闭残留雷雨,并持续校验以防存档加载覆盖
- 启动阶段改用已注入的环境运行时服务直接应用并验证状态,不再等待
-
修复恶劣天气下每次定时同步都会重复执行
Day → Cloudy双切换的问题 -
修复季节性彩蛋启用后,玩家原本手动开启的“樱花”等景色可能被自动化误关的问题
- 移除未托管景色的强制孤儿清理,自动化只关闭自己托管过的项目
- 樱花自动触发窗口收窄为 3-4 月
-
新增配置项:
Automation.EnableAmbientSounds = false- “季节性景色彩蛋”和“环境音效”现在分开控制
- 设置面板新增“环境音效”开关
v5.2.1-解耦补丁终于落地
- 架构重构:完成天气同步与时间同步解耦,新增策略快照层(
SyncPolicy)统一决策EnableWeatherSync与EnableTimeSync可独立控制,不再互相绑死Cloudy仅在“时间同步开 + 天气同步开 + 恶劣天气 + 非夜晚”时触发- 双同步都关闭时不再自动接管环境,但 UI 功能仍可独立运行
- 新增配置项:
TimeSync.EnableTimeSync = true(默认开启)- 已接入设置面板,并补充中/英/日翻译项
- UI 行为修复:
ShowWeatherOnDate与主同步逻辑彻底脱钩- 关闭显示时立即清空天气文案,避免残留
- 打开显示时立即尝试同步天气文案(优先复用缓存)
- 网络失败时保留上一次成功天气文本,不再清空闪烁
- 过场剧情保护修复:
- 修复同步器在剧情阶段误介入的问题(时间接管、天气接管、彩蛋托管统一门控)
- 加固
IsInCutscene反射判定,避免空对象/枚举装箱导致判定失效
- 天气缓存体验优化:
- 增加缓存有效性判断与“缓存剩余时间”读取接口
- 轮询改为“缓存优先、到期再拉取”,减少频繁切换 UI 时必须按
F7的问题 - 无有效缓存时会立即请求一次,保证首次显示可用
- 工程质量:
- 新增
WeatherUiState纯逻辑状态机 - 补充 7 条新单元测试(策略组合 + UI 天气文本规则)
- 新增
v5.2.0-你管这叫MCP?
- 新增 UnityExplorer MCP Bridge 插件,AI 可直接读取游戏运行时 UI 布局
- 8 个 MCP 工具:get_ui_hierarchy / inspect_element / search_elements / get_mouse_element / execute_code / get_console_logs / take_screenshot / list_scenes
- 通过 Reflection.Emit 动态创建 InteractiveBase 派生类绕过 Mono.CSharp accessibility 限制
- HTTP+SSE 传输,监听 localhost:8972
- 修复了 ApplyBaseEnvironment 在环境已激活时跳过 ChangeTime 导致光照不切换的问题
- 添加了装饰品解锁扫描器(DecorationUnlockScanner),缓存访问器提升性能
- 版本号统一管理:从各处硬编码改为
ChillEnvPlugin.PluginVersion单源配置 - 完善了 AGENTS.md 环境类型中文名对照表(通过 MCP 实时读取游戏内按钮文本验证)
v5.1.3-最后的两月
- 修复了由于游戏修正单词导致的 UI 层显示内容无法正确 hook 问题
- 修复了由于游戏更新时间调整方法导致时间切换不生效问题
- 修复了由于上面一堆报错导致热键不生效的问题
- 添加了对于“转换心情”中需要通过货币解锁内容物的解锁支持
- 注:此配置项默认关闭,开启此配置项可能导致游戏寿命大幅缩短
- 开启此配置项不支持热修改,请确保修改时游戏处于关闭状态或修改后重启游戏
- 此配置项不影响存档,你依旧可以在关闭解锁功能后重启手动兑换道具
- 注:此配置项默认关闭,开启此配置项可能导致游戏寿命大幅缩短
- 此版本开发时间约 4小时,部分情景可能未作细致测试,如果遇到 bug,请通过 GitHub 进行反馈。
v5.1.2-老坛酸菜版(?
- 内置了一个 KEY,当发现 KEY 异常调用时,不排除强行重置行为
- 修复了可能导致 UI 控件无法交互的问题
- 修复了背景音乐在彩蛋模式激活后无法关闭的问题
- 修复了天气开关被错误统计到脏目录的问题
b5.1.1
- 添加了一个改写上午/下午的功能,现在是凌晨、清晨、上午、中午、下午、傍晚、晚上了
b5.0.1-煮饭时间到
- 没啥变化,只是把风景啥的的枚举类丢给 Gemini 让他写上去了,这 B 这都要刷一个版本号,我服了
- 此版本应该是游戏本体下一次更新前的定稿版本了,除非有 bug 需要修复,暂时想不到新功能了。你有好的想法也可以提出来。
v5.0.0
- 什么?版本直接跳到 v5 了?你都干了些什么口牙!
- 独立组件:新建一个
SceneryAutomationSystem类(继承MonoBehaviour),挂载在Runner上,这样它有自己的Update循环,不干扰原本的天气同步逻辑 - 规则驱动:Gemini 它把“做饭声音”、“空调声音”、“樱花”、“烟花”等抽象成了
SceneryRule。这样以后我想加新彩蛋,只需要在列表里加一行配置,不用改核心代码 - 用户防打架机制 (脏标记):这是核心。通过
Hook游戏的点击事件,一旦用户手动点过某个开关,系统就把这个开关拉入“黑名单”,本局游戏不再自动接管。(<---这不是偷懒吗?) - 注:彩蛋功能的触发机制举例起来比较麻烦,有能力者可以把代码丢给 AI 或者自行分析,目前只使用了部分参数进行判断,后续游戏更新后可能会根据情况进行优化。
v4.5.0
- 添加了一个在主界面左上角日期后显示天气和温度的功能
- 添加了一个可选配置项
ShowWeatherOnDate,用于控制是否在日期后追加显示天气和温度 - 此功能需要引用
Unity.TextMeshPro.dll
v4.4.1-更好的天空
- 守护了部分人的白天或者是黄昏
- 将小雨、小雪、阵雨、阵雪这种非恶劣天气从恶劣天气名单中移除
v4.4.0
- 守护了这片夜空
- 重构了环境、风景推导逻辑,现在晚上永远只会是晚上,白天恶劣天气可能会是多云,也可能是白天和黄昏,谁知道呢
v4.3.1
- 说是优化了 v4.3.0 出现问题的原因
- 捏吗你不能修复的时候一并优化吗?
v4.3.0
- 修复了一个在多云状态下按
F9会导致所有环境被错误关闭的问题
v4.2.3-V4.2.4
- 还是没修好,Gemini 出去
v4.2.2
- 发现了一个在多云状态下按
F9会导致所有环境被错误关闭的问题 - 然后这 Gemini 没修好
v4.2.1
- 添加了一个调试模式,开始尝试调整调整天气 ID 查看对应天气切换效果(什么?你现在才开始测试?!)
- 让 Gemini 别刷版本号了
v4.2.0
- 修复了一个按
F7没反应的问题,加了个输出说是
v3.7.0-v4.1.0-外地AI刷版本号来了
- 优化
F9按键逻辑,优化日志提示 - 修复偶发日志卡死的状态,即使不影响使用
- 修复之前和AI沟通的错误:它一直以为黄昏要提前1小时切换,实际上是30分钟
- 优化切换逻辑(真是优化?)
缓存逻辑是这样的:
- 数据存储:有一个静态变量
_cachedWeather存在内存里。- 有效期:60 分钟 (
TimeSpan.FromMinutes(60)).- 快钟 (30 秒一次):
- 只读缓存。如果缓存里有数据,直接拿来用,不发网络请求(不费流量)。
- 它会利用缓存里的“晴/雨”状态,重新结合“当前每一秒的时间”来判断是否该日落了。
- 注:本来想让 AI 写定时器的,但是 AI 说不如这个,我不懂所以听他的
- 慢钟 (30 分钟一次):
- 强制更新。即使缓存没过期(60 分钟),只要到了用户设定的刷新间隔(默认 30 分钟),就会尝试发起新的 API 请求来刷新数据。
v3.6.0-不想开挂?满足你
- 增加解锁所有环境和装饰品可选配置项
v3.5.0-估摸着能跑版
- 优化按钮逻辑,采用模拟点击
MainIcon方式 - 修复环境切换可能不生效的问题
- 改进代码结构和日志输出
v3.4.x
- 修复部分天气效果无法关闭的问题
- 优化环境互斥逻辑
v3.3.0 及更早版本
- 分析源码、分析环境开关逻辑、分析景色开关逻辑
- 初始版本开发
- 谁能想到用了3个不同厂商的不同AI写了一天才写出来,我累死了
详细更新日志请查看 Git 提交记录