SuperAPI AI 工具集

uloop-hot-reload

通用与其它

查看项目

更新于 10-15 22:12

技能介绍

用途:在 Unity 运行中的编辑器(EditMode 或 PlayMode)里,直接根据已编辑的项目源码替换方法体,无需域重载、特性或源码标记。支持私有/内部成员访问、静态方法、返回值、异步方法与迭代器,包括异步、迭代器、lambda、局部函数和 LINQ 查询体内的私有访问。无法修补的方法会报告为 Skipped 或 Failed,单个不可修补方法不会中止其余运行。

主要能力:可修补普通方法体与带方法体的属性 getter;可新增方法、字段及受支持的属性(Added 行),同一程序集内同一次重载中新增成员对已编辑代码可见;可引入顶层 public 类、结构、枚举或接口(IntroducedTypes)。签名变更、构造函数、运算符、编译的 setter/init/indexer 访问器、事件访问器会被跳过,终结器与接口成员静默不应用。

使用方式: uloop hot-reload --files Assets/Scripts/Enemy.cs uloop hot-reload --files Assets/Scripts/Enemy.cs,Assets/Scripts/Boss.cs uloop hot-reload uloop hot-reload --revert-all uloop hot-reload --status 多文件以逗号分隔的单个值或 JSON 数组传入。--status 列出当前活动变更,不能与 --files 或 --revert-all 组合。

适用场景:作为探索阶段迭代编辑器代码,配合 uloop compile 作为落地阶段;适合在 PlayMode 中调参、验证方法体改动。

限制:全新 .asmdef 下的脚本首次导入前无法热重载,需先运行 uloop compile;新文件不会被自动选中,须用 --files 显式传入。新增成员与引入类型在编译或域重载后消失。重载按文件全有或全无:任一 Failed 方法使该文件不应用,Failed 类型使该程序集所有文件不应用。热重载活动期间 AutoRefreshHeld 为 true,uloop compile 释放该保持。一次性方法(Awake、Start 等)修补成功但对已执行的调用无效果。更多规则见 references/ 下各参考文件。